Ficheros y directorios
-
Upload
jose-luis-martinez -
Category
Documents
-
view
475 -
download
1
description
Transcript of Ficheros y directorios
![Page 1: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/1.jpg)
Ficheros y Directorios
Curso Perl desde zeroNov 2012
Jose Luis MartínezBarcelona.pm
![Page 2: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/2.jpg)
El sistema de ficheros!
![Page 3: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/3.jpg)
Como abro un fichero?open (my $fh, ???, $filename);
![Page 4: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/4.jpg)
Para leeropen (my $fh, “<“, $filename);
![Page 5: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/5.jpg)
Para para escribiropen (my $fh, “>“, $filename);
![Page 6: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/6.jpg)
Y como leo?open (my $fh, “<“, $filename);while (my $line = <$fh>) { chomp $line; …}
![Page 7: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/7.jpg)
Y como leo?open (my $fh, “<“, $filename);while (my $line = <$fh>) { chomp $line; …}
![Page 8: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/8.jpg)
Y como escribo?open (my $fh, “>“, $filename);foreach my $line (@array_with_lines) { print $fh “$line\n”;}
![Page 9: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/9.jpg)
Y como escribo?open (my $fh, “>“, $filename);foreach my $line (@array_with_lines) { print $fh “$line\n”;}
![Page 10: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/10.jpg)
Te suena?• < LEER• > ESCRIBIR (Cuidado! Crea un fichero nuevo o vacía
el que existe)• >> ESCRIBIR AL FINAL• +< LEER Y ESCRIBIR• +> ESCRIBIR (ah!... Y querré leer) (Vacía el
fichero )
![Page 11: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/11.jpg)
Y si te suena tanto…• | PIPE
• |-open (my $fh, “|-”, “text2img –png –output
file.png”);print $fh “Texto mega-chulo”;• -|open (my $fh, “-|”, “md5sum $fichero”);my $md5 = <$fh>; # <- El md5sum del fichero!!!
![Page 12: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/12.jpg)
Cada vez que haces pipe a un programa para hacer algo que ya sabe hacer Perl, Dios mata a un gatito.
Consulta CPAN para salvar a los gatitos
![Page 13: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/13.jpg)
Gracias por no hacerlo
![Page 14: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/14.jpg)
Rizando el rizo• -|- Quiero escribir a un programa, y recoger su salida
en una variable.
![Page 15: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/15.jpg)
Rizando el rizo• -|- Quiero escribir a un programa, y recoger su salida
en una variable.
Ver: man perlipc
![Page 16: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/16.jpg)
Ya estoyclose ($fh);
![Page 17: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/17.jpg)
Haciéndolo mejor
open (my $fh, “>“, $filename) or die “Error: $!”;while (…) { print $fh $line or die “Error writing: $!”; …}close($fh) or die “Error closing: $!”;
![Page 18: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/18.jpg)
Haciéndolo (aún) mejoruse autodie;open (my $fh, “>“, $filename);while (…) { print $fh $line; …}close($fh);
![Page 19: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/19.jpg)
![Page 20: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/20.jpg)
Más variado
![Page 21: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/21.jpg)
Haciéndolo más variado
• ¿Tengo que leer línea a línea?read($fh, $var, 10);
• $/ (INPUT_RECORD_SEPARATOR){ local $/ = “a”; $record = <$fh>; }
• seek– Moverte por un fichero
![Page 22: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/22.jpg)
Operadores unarios
![Page 23: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/23.jpg)
Operadores unarios
[…]-e File exists. -z File has zero size (is empty). -s File has nonzero size (returns size in bytes). -f File is a plain file. -d File is a directory. -l File is a symbolic link.[…]
![Page 24: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/24.jpg)
Operadores unariosif (-d $file) { inspect_dir($file);} elsif (-f $file){ process_file($file);}
![Page 25: Ficheros y directorios](https://reader035.fdocuments.in/reader035/viewer/2022062220/557bba24d8b42a525b8b4c5b/html5/thumbnails/25.jpg)
¿Y qué pasa con los directorios?opendir(my $dh, $some_dir) || die "can't opendir
$some_dir: $!";@dot_files = grep { /^\./ && -f "$some_dir/$_" }
readdir($dh);closedir $dh;