SlideShare una empresa de Scribd logo
1 de 25
Ficheros y Directorios


            Curso Perl desde zero
                        Nov 2012
               Jose Luis Martínez
                   Barcelona.pm
El sistema de ficheros!
Como abro un fichero?
open (my $fh, ???, $filename);
Para leer
open (my $fh, “<“, $filename);
Para para escribir
open (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 ESCRIBIR
• +> ESCRIBIR (ah!... Y querré leer) (Vacía el
  fichero )
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!!!
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
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 estoy
close ($fh);
Haciéndolo mejor

open (my $fh, “>“, $filename) or die “Error: $!”;
while (…) {
  print $fh $line or die “Error writing: $!”;
  …
}
close($fh) or die “Error closing: $!”;
Haciéndolo (aún) mejor
use 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”;
    $record = <$fh>;
}

• seek
     – Moverte por un fichero
Operadores unarios
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.
[…]
Operadores unarios
if (-d $file) {
   inspect_dir($file);
} elsif (-f $file){
  process_file($file);
}
¿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;

Más contenido relacionado

La actualidad más candente

Funciones de registro del sistema operativo
Funciones de registro del sistema operativoFunciones de registro del sistema operativo
Funciones de registro del sistema operativojamesconradohernandez
 
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...RootedCON
 
Programacion iv sesion11 php
Programacion iv sesion11 phpProgramacion iv sesion11 php
Programacion iv sesion11 phpRoberto Garcia
 
Codigo que conecta php con mysql
Codigo que conecta php con mysqlCodigo que conecta php con mysql
Codigo que conecta php con mysqleylincita10
 
Python Tutorial Presentation
Python Tutorial PresentationPython Tutorial Presentation
Python Tutorial Presentationguestccc92ad
 

La actualidad más candente (12)

Carpeta
Carpeta   Carpeta
Carpeta
 
Comandos de linux
Comandos de linuxComandos de linux
Comandos de linux
 
Prac 2 alda
Prac 2 aldaPrac 2 alda
Prac 2 alda
 
Funciones de registro del sistema operativo
Funciones de registro del sistema operativoFunciones de registro del sistema operativo
Funciones de registro del sistema operativo
 
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
 
Comandos de linux
Comandos de linuxComandos de linux
Comandos de linux
 
Programacion iv sesion11 php
Programacion iv sesion11 phpProgramacion iv sesion11 php
Programacion iv sesion11 php
 
Codigo que conecta php con mysql
Codigo que conecta php con mysqlCodigo que conecta php con mysql
Codigo que conecta php con mysql
 
Ayuda
AyudaAyuda
Ayuda
 
Python Tutorial Presentation
Python Tutorial PresentationPython Tutorial Presentation
Python Tutorial Presentation
 
Apuntes_6
Apuntes_6Apuntes_6
Apuntes_6
 
Guion scripts
Guion scriptsGuion scripts
Guion scripts
 

Destacado

Base de datos pres..
Base de datos pres..Base de datos pres..
Base de datos pres..chovialbi
 
TALLER PRÁCTICO POWER POINT - BASES DE DATOS
TALLER PRÁCTICO POWER POINT - BASES DE DATOSTALLER PRÁCTICO POWER POINT - BASES DE DATOS
TALLER PRÁCTICO POWER POINT - BASES DE DATOSJohnfer Montoya
 
Bases de datos.ppt presentacion
Bases de datos.ppt presentacionBases de datos.ppt presentacion
Bases de datos.ppt presentacionandreaydarlys
 
Base de Datos. Microsoft Access 2007
Base de Datos. Microsoft Access 2007Base de Datos. Microsoft Access 2007
Base de Datos. Microsoft Access 2007Jomicast
 
T1 Gestion De Datos
T1 Gestion De DatosT1 Gestion De Datos
T1 Gestion De Datosrmonago
 
Ficheros y carpetas
Ficheros y carpetasFicheros y carpetas
Ficheros y carpetasgeopaloma
 
Diapositivas sobre BD (Base de Datos)
Diapositivas sobre BD (Base de Datos)Diapositivas sobre BD (Base de Datos)
Diapositivas sobre BD (Base de Datos)angeljlp08
 

Destacado (10)

Base de datos pres..
Base de datos pres..Base de datos pres..
Base de datos pres..
 
TALLER PRÁCTICO POWER POINT - BASES DE DATOS
TALLER PRÁCTICO POWER POINT - BASES DE DATOSTALLER PRÁCTICO POWER POINT - BASES DE DATOS
TALLER PRÁCTICO POWER POINT - BASES DE DATOS
 
Base de datos ppt
Base de datos pptBase de datos ppt
Base de datos ppt
 
ACCESS
ACCESSACCESS
ACCESS
 
Bases de datos.ppt presentacion
Bases de datos.ppt presentacionBases de datos.ppt presentacion
Bases de datos.ppt presentacion
 
Base de Datos. Microsoft Access 2007
Base de Datos. Microsoft Access 2007Base de Datos. Microsoft Access 2007
Base de Datos. Microsoft Access 2007
 
Glassfish
GlassfishGlassfish
Glassfish
 
T1 Gestion De Datos
T1 Gestion De DatosT1 Gestion De Datos
T1 Gestion De Datos
 
Ficheros y carpetas
Ficheros y carpetasFicheros y carpetas
Ficheros y carpetas
 
Diapositivas sobre BD (Base de Datos)
Diapositivas sobre BD (Base de Datos)Diapositivas sobre BD (Base de Datos)
Diapositivas sobre BD (Base de Datos)
 

Similar a Ficheros y directorios (20)

Ficheros Php
Ficheros PhpFicheros Php
Ficheros Php
 
Php
PhpPhp
Php
 
32773 php-basico
32773 php-basico32773 php-basico
32773 php-basico
 
Estructuras de control 1.0
Estructuras de control 1.0Estructuras de control 1.0
Estructuras de control 1.0
 
Unidad 3 ficheros
Unidad 3 ficherosUnidad 3 ficheros
Unidad 3 ficheros
 
Php
PhpPhp
Php
 
Estructurabasicaphp 130216112853-phpapp01
Estructurabasicaphp 130216112853-phpapp01Estructurabasicaphp 130216112853-phpapp01
Estructurabasicaphp 130216112853-phpapp01
 
Estructuras de control 1
Estructuras de control 1Estructuras de control 1
Estructuras de control 1
 
Estructuras de control 1
Estructuras de control 1Estructuras de control 1
Estructuras de control 1
 
Bash Tips Tricks Campus
Bash Tips Tricks CampusBash Tips Tricks Campus
Bash Tips Tricks Campus
 
Taller de Shell Scripting
Taller de Shell ScriptingTaller de Shell Scripting
Taller de Shell Scripting
 
Php
PhpPhp
Php
 
PHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoPHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básico
 
IntroducciónPHP.pptx
IntroducciónPHP.pptxIntroducciónPHP.pptx
IntroducciónPHP.pptx
 
Manejo_archivos.ppt
Manejo_archivos.pptManejo_archivos.ppt
Manejo_archivos.ppt
 
Tema2 3
Tema2 3Tema2 3
Tema2 3
 
Php
PhpPhp
Php
 
Introducción a php
Introducción a phpIntroducción a php
Introducción a php
 
Php1 sesión 6
Php1 sesión 6Php1 sesión 6
Php1 sesión 6
 
Password cracking
Password crackingPassword cracking
Password cracking
 

Más de Jose Luis Martínez

Más de Jose Luis Martínez (17)

Being cloudy with perl
Being cloudy with perlBeing cloudy with perl
Being cloudy with perl
 
Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)
 
MooseX::Datamodel - Barcelona Perl Workshop Lightning talk
MooseX::Datamodel - Barcelona Perl Workshop Lightning talkMooseX::Datamodel - Barcelona Perl Workshop Lightning talk
MooseX::Datamodel - Barcelona Perl Workshop Lightning talk
 
Paws - Perl AWS SDK Update - November 2015
Paws - Perl AWS SDK Update - November 2015Paws - Perl AWS SDK Update - November 2015
Paws - Perl AWS SDK Update - November 2015
 
Paws - A Perl AWS SDK
Paws - A Perl AWS SDKPaws - A Perl AWS SDK
Paws - A Perl AWS SDK
 
Boosting MySQL (for starters)
Boosting MySQL (for starters)Boosting MySQL (for starters)
Boosting MySQL (for starters)
 
Plenv and carton
Plenv and cartonPlenv and carton
Plenv and carton
 
Building an aws sdk for Perl - Granada Perl Workshop 2014
Building an aws sdk for Perl - Granada Perl Workshop 2014Building an aws sdk for Perl - Granada Perl Workshop 2014
Building an aws sdk for Perl - Granada Perl Workshop 2014
 
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech TalksWriting plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
 
Escribir plugins para Nagios en Perl
Escribir plugins para Nagios en PerlEscribir plugins para Nagios en Perl
Escribir plugins para Nagios en Perl
 
NRD: Nagios Result Distributor
NRD: Nagios Result DistributorNRD: Nagios Result Distributor
NRD: Nagios Result Distributor
 
Perl and AWS
Perl and AWSPerl and AWS
Perl and AWS
 
Writing nagios plugins in perl
Writing nagios plugins in perlWriting nagios plugins in perl
Writing nagios plugins in perl
 
DBIx::Class
DBIx::ClassDBIx::Class
DBIx::Class
 
DBI
DBIDBI
DBI
 
The modern perl toolchain
The modern perl toolchainThe modern perl toolchain
The modern perl toolchain
 
Introducción a las Expresiones Regulares
Introducción a las Expresiones RegularesIntroducción a las Expresiones Regulares
Introducción a las Expresiones Regulares
 

Ficheros y directorios

  • 1. Ficheros y Directorios Curso Perl desde zero Nov 2012 Jose Luis Martínez Barcelona.pm
  • 2. El sistema de ficheros!
  • 3. Como abro un fichero? open (my $fh, ???, $filename);
  • 4. Para leer open (my $fh, “<“, $filename);
  • 5. Para para escribir open (my $fh, “>“, $filename);
  • 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
  • 13. Gracias por no hacerlo
  • 14. Rizando el rizo • -|- Quiero escribir a un programa, y recoger su salida en una variable.
  • 15. Rizando el rizo • -|- Quiero escribir a un programa, y recoger su salida en una variable. Ver: man perlipc
  • 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);
  • 19.
  • 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. […]
  • 24. Operadores unarios if (-d $file) { inspect_dir($file); } elsif (-f $file){ process_file($file); }
  • 25. ¿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;