Advertisement
hackloper775

Ejemplo OOPerl

Jan 4th, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.79 KB | None | 0 0
  1. #!/usr/bin/env perl
  2.  
  3. use strict;
  4. use warnings;
  5. use feature 'say';
  6.  
  7. package Archivo;
  8.  
  9. sub new
  10. {
  11.     my $class = shift;
  12.     my $self = {};
  13.     bless $self,$class;
  14.     return $self;
  15. }
  16.  
  17. sub setNombre
  18. {
  19.     $_[0]->{NOMBRE} = $_[1];
  20. }
  21.  
  22. sub setDir
  23. {
  24.    my $user = getlogin();
  25.    $_[0]->{DIR} = $_[1];
  26.    $_[0]->{FULLDIR} = "/home/" . $user ."/" . $_[0]->{DIR};
  27. }
  28.  
  29. sub leer
  30. {
  31.    my $archivo = $_[0]->{FULLDIR}."/".$_[0]->{NOMBRE};
  32.    say  $_[0]->{FULLDIR};
  33.    open (ARCHIVO,$archivo);
  34.    while (<ARCHIVO>)
  35.    {
  36.       chomp($_);
  37.       say $_;
  38.    }
  39.    close ARCHIVO;
  40. }
  41.  
  42. sub escribir
  43. {
  44.    open(ARCHIVO,">> $_[0]->{FULLDIR}/$_[0]->{NOMBRE}") || die "No pudo crearse: $!";
  45.    say "Escriniendo en $_[0]->{NOMBRE}";
  46.    say "Escribe EOF para terminar de escribir";
  47.    while(chomp(my $nombre=<STDIN>))
  48.    {
  49.       last if $nombre eq "EOF";
  50.       print ARCHIVO "$nombre\n";
  51.    }
  52.    print ARCHIVO "Hola";
  53. }
  54.  
  55. package LeerArchivo;
  56.  
  57. use base qw(Archivo);
  58.  
  59. sub recorrer
  60. {
  61.    my $dir = $_[0]->{DIR};
  62.    my (@archivos,@dirs) = ((),()); # Creamos dos arrays vacios  
  63.    opendir(my $recorrer, $dir) || die "Error :( $! \n";  
  64.    while(readdir $recorrer)  
  65.    {  
  66.       if (-d $dir . "/" . $_)
  67.       {
  68.          push (@dirs,$_);
  69.       }  
  70.       if (-f $dir . "/" . $_)
  71.       {
  72.          push (@archivos,$_);  
  73.       }  
  74.    }
  75.    @{$_[0]->{ARCHIVOS}} = @archivos;
  76.    @{$_[0]->{DIRECTORIOS}} = @dirs;
  77. }
  78.  
  79. sub getDirs
  80. {
  81.    return @{$_[0]->{DIRECTORIOS}} if @{$_[0]->{DIRECTORIOS}};
  82. }
  83.  
  84. sub getFiles
  85. {
  86.    return @{$_[0]->{ARCHIVOS}} if @{$_[0]->{ARCHIVOS}};
  87. }
  88.  
  89. sub getName {
  90.     return $_[0]->{NOMBRE};
  91. }
  92.  
  93. package main;
  94.  
  95. my $archivo = LeerArchivo->new();
  96.  
  97. $archivo->setNombre('ejemplo.txt');
  98.  
  99. $archivo->setDir(".");
  100.  
  101. $archivo->leer();
  102.  
  103. $archivo->escribir();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement