3. use v5.10; use strict; use warnings; use File::Find; use File::Glob 'bsd_glob'; use DateTime; my ( $from, $to ) = @ARGV; die "Directory $from not found" if not -d $from; die "Directory $to not found" if not -d $to; sub epoch_to_iso8601 { my ( $time ) = @_; return DateTime->from_epoch(epoch => $time)->iso8601; } File::Find::find( { wanted => amp;process_file, no_chdir => 1 }, $from );
4. sub process_file { my $log_prefix = epoch_to_iso8601(time); my $file_name = $File::Find::name; my $postfix = File::Spec->abs2rel( $file_name, $from ); my $destiny = File::Spec->join( $to, $postfix ); die "$file_name isn't readable" if not -r $file_name; if ( -d $file_name ) { return if -d $destiny; mkdir($destiny) or die "Can't mkdir $destiny: $!"; say "$log_prefix: Directory $destiny created"; } else { ...
5. ... } else { my $original_utime = ( stat $file_name )[9]; if ( my @files = bsd_glob("$destiny.BACKUP.*") ) { my $last_path = ( sort @files )[-1]; return if $original_utime < ( stat $last_path )[9]; } $destiny = "$destiny.BACKUP." . epoch_to_iso8601($original_utime); system( 'cp', $file_name, $destiny ) and die "Can't cp $file_name $destiny"; say "$log_prefix: cp $file_name $destiny"; } }
7. autodie mkdir($destiny) or die "Can't mkdir $destiny: $!" ; To mkdir($destiny); Error Example: Can't mkdir('backup/pippo'): Permission denied at perl5i/example.pl line 26
8. autodie system('cp', $file_name, $destiny) and die "Can't cp $file_name $destiny" ; To system('cp', $file_name, $destiny); Error example: "cp" unexpectedly returned exit value 1 at (eval 67) line 13 at perl5i/example.pl line 37
9. time to Object my $log_time_prefix = epoch_to_iso8601(time()) ; To my $log_time_prefix = time()->iso8601 ;
10. stat to Object my $original_utime = ( stat($file_name) )[9] ; To my $original_utime = stat($file_name)->mtime ;
11. stat to Object return if $original_utime < ( stat($last_path) )[9] ; To return if $original_utime < stat($last_path)->mtime ;
15. use v5.10; use strict; use warnings; use File::Find; use File::Glob 'bsd_glob'; use DateTime; my ( $from, $to ) = @ARGV; die "Directory $from not found" if not -d $from; die "Directory $to not found" if not -d $to; sub epoch_to_iso8601 { my ( $time ) = @_; return DateTime->from_epoch(epoch => $time)->iso8601; } File::Find::find( { wanted => amp;process_file, no_chdir => 1 }, $from );
16. use perl5i::2; use File::Find; use File::Glob 'bsd_glob'; use DateTime; my ( $from, $to ) = @ARGV; die "Directory $from not found" if !-d $from; die "Directory $to not found" if !-d $to; func SCALAR::epoch_to_iso8601( $time ) { DateTime->from_epoch(epoch => $time)->iso8601 } File::Find::find( { wanted => amp;process_file, no_chdir => 1 }, $from );
17. sub process_file { my $log_prefix = epoch_to_iso8601(time()); my $file_name = $File::Find::name; my $postfix = File::Spec->abs2rel( $file_name, $from ); my $destiny = File::Spec->join( $to, $postfix ); die "$file_name isn't readable" if not -r $file_name; if ( -d $file_name ) { return if -d $destiny; mkdir($destiny) or die "Can't mkdir $destiny: $!"; say "$log_prefix: Directory $destiny created"; } else { ...
18. func process_file() { my $log_prefix = time->iso8601 ; my $file_name = $File::Find::name; my $postfix = File::Spec->abs2rel( $file_name, $from ); my $destiny = File::Spec->join( $to, $postfix ); die "$file_name isn't readable" if not -r $file_name; if ( -d $file_name ) { return if -d $destiny; mkdir($destiny); say "$log_prefix: Directory $destiny created"; } else { ...
19. ... } else { my $original_utime = ( stat $file_name )[9] ; if ( my @files = bsd_glob("$destiny.BACKUP.*") ) { my $last_path = ( sort @files )[-1]; return if $original_utime < ( stat $last_path )[9] ; } $destiny = "$destiny.BACKUP." . epoch_to_iso8601($original_utime) ; system( 'cp', $file_name, $destiny ) and die "Can't cp $file_name $destiny"; say "$log_prefix: cp $file_name $destiny"; } }
20. ... } else { my $original_utime = stat($file_name)->mtime ; if ( my @files = bsd_glob("$destiny.BACKUP.*") ) { return if $original_utime < stat( @files->maxstr )->mtime ; } $destiny = "$destiny.BACKUP." . $original_utime->epoch_to_iso8601 ; system( 'cp', $file_name, $destiny ); say "$log_prefix: cp $file_name $destiny"; } }
22. Meta Object # the object's class my $class = $obj->mo->class; # its parent classes my @isa = $obj->mo->isa; # the complete inheritance hierarchy my @complete_isa = $obj->mo->linear_isa; # the reference type of the object my $reftype = $obj->mo->reftype;