Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ficheros y directorios

913 views

Published on

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

  • Be the first to comment

  • Be the first to like this

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;

×