6. Y como leo?
open (my $fh, “<“, $filename);
while (my $line = <$fh>) {
chomp $line;
…
}
7. Y como leo?
open (my $fh, “<“, $filename);
while (my $line = <$fh>) {
chomp $line;
…
}
8. Y como escribo?
open (my $fh, “>“, $filename);
foreach my $line (@array_with_lines) {
print $fh “$linen”;
}
9. Y como escribo?
open (my $fh, “>“, $filename);
foreach my $line (@array_with_lines) {
print $fh “$linen”;
}
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. 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. 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
17. Haciéndolo mejor
open (my $fh, “>“, $filename) or die “Error: $!”;
while (…) {
print $fh $line or die “Error writing: $!”;
…
}
close($fh) or die “Error closing: $!”;
18. Haciéndolo (aún) mejor
use autodie;
open (my $fh, “>“, $filename);
while (…) {
print $fh $line;
…
}
close($fh);
21. 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
23. 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.
[…]