Ficheros y Directorios            Curso Perl desde zero                        Nov 2012               Jose Luis Martínez  ...
El sistema de ficheros!
Como abro un fichero?open (my $fh, ???, $filename);
Para leeropen (my $fh, “<“, $filename);
Para para escribiropen (my $fh, “>“, $filename);
Y como leo?open (my $fh, “<“, $filename);while (my $line = <$fh>) {  chomp $line;  …}
Y como leo?open (my $fh, “<“, $filename);while (my $line = <$fh>) {  chomp $line;  …}
Y como escribo?open (my $fh, “>“, $filename);foreach my $line (@array_with_lines) {  print $fh “$linen”;}
Y como escribo?open (my $fh, “>“, $filename);foreach my $line (@array_with_lines) {  print $fh “$linen”;}
Te suena?• < LEER• > ESCRIBIR (Cuidado! Crea un fichero nuevo o vacía  el que existe)• >> ESCRIBIR AL FINAL• +< LEER Y ESC...
Y si te suena tanto…• | PIPE• |-open (my $fh, “|-”, “text2img –png –output  file.png”);print $fh “Texto mega-chulo”;• -|op...
Cada vez que haces pipe a un programa para hacer algo    que ya sabe hacer Perl, Dios mata a un gatito.        Consulta CP...
Gracias por no hacerlo
Rizando el rizo• -|-Quiero escribir a un programa, y recoger su salida  en una variable.
Rizando el rizo• -|-Quiero escribir a un programa, y recoger su salida  en una variable.Ver: man perlipc
Ya estoyclose ($fh);
Haciéndolo mejoropen (my $fh, “>“, $filename) or die “Error: $!”;while (…) {  print $fh $line or die “Error writing: $!”; ...
Haciéndolo (aún) mejoruse autodie;open (my $fh, “>“, $filename);while (…) {  print $fh $line;  …}close($fh);
Más variado
Haciéndolo más variado• ¿Tengo que leer línea a línea?read($fh, $var, 10);• $/ (INPUT_RECORD_SEPARATOR){    local $/ = “a”...
Operadores unarios
Operadores unarios[…]-e File exists.-z File has zero size (is empty).-s File has nonzero size (returns size in bytes).-f F...
Operadores unariosif (-d $file) {   inspect_dir($file);} elsif (-f $file){  process_file($file);}
¿Y qué pasa con los directorios?opendir(my $dh, $some_dir) || die "cant opendir  $some_dir: $!";@dot_files = grep { /^./ &...
Ficheros y directorios
Upcoming SlideShare
Loading in …5
×

Ficheros y directorios

784 views

Published on

Presentación sobre ficheros y directorios en Perl para el curso Perl desde zero.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
784
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ficheros y directorios

  1. 1. Ficheros y Directorios Curso Perl desde zero Nov 2012 Jose Luis Martínez Barcelona.pm
  2. 2. El sistema de ficheros!
  3. 3. Como abro un fichero?open (my $fh, ???, $filename);
  4. 4. Para leeropen (my $fh, “<“, $filename);
  5. 5. Para para escribiropen (my $fh, “>“, $filename);
  6. 6. Y como leo?open (my $fh, “<“, $filename);while (my $line = <$fh>) { chomp $line; …}
  7. 7. Y como leo?open (my $fh, “<“, $filename);while (my $line = <$fh>) { chomp $line; …}
  8. 8. Y como escribo?open (my $fh, “>“, $filename);foreach my $line (@array_with_lines) { print $fh “$linen”;}
  9. 9. Y como escribo?open (my $fh, “>“, $filename);foreach my $line (@array_with_lines) { print $fh “$linen”;}
  10. 10. 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 )
  11. 11. 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!!!
  12. 12. 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
  13. 13. Gracias por no hacerlo
  14. 14. Rizando el rizo• -|-Quiero escribir a un programa, y recoger su salida en una variable.
  15. 15. Rizando el rizo• -|-Quiero escribir a un programa, y recoger su salida en una variable.Ver: man perlipc
  16. 16. Ya estoyclose ($fh);
  17. 17. Haciéndolo mejoropen (my $fh, “>“, $filename) or die “Error: $!”;while (…) { print $fh $line or die “Error writing: $!”; …}close($fh) or die “Error closing: $!”;
  18. 18. Haciéndolo (aún) mejoruse autodie;open (my $fh, “>“, $filename);while (…) { print $fh $line; …}close($fh);
  19. 19. Más variado
  20. 20. 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
  21. 21. Operadores unarios
  22. 22. 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.[…]
  23. 23. Operadores unariosif (-d $file) { inspect_dir($file);} elsif (-f $file){ process_file($file);}
  24. 24. ¿Y qué pasa con los directorios?opendir(my $dh, $some_dir) || die "cant opendir $some_dir: $!";@dot_files = grep { /^./ && -f "$some_dir/$_" } readdir($dh);closedir $dh;

×