Entering edit mode
9.4 years ago
hemant.nitjsr
•
0
Try to do manipulation in each file in incremental order. Below is my code n it's giving an error message.
Use of uninitialized value $lines[0] in substitution (s///) at ./Replace.pl line 26.
Use of uninitialized value $lines[1] in substitution (s///) at ./Replace.pl line 27.
As I'm new in Perl World kindly help.
#!/usr/bin/perl -w
use strict;
use warnings;
use 5.010;
use autodie;
use Time::Piece;
use Time::Seconds qw/ ONE_MINUTE /;
use constant DATE_FORMAT => '%Y%m%d%H%M%S';
my $n;
my $directory="/home/tt/Doc/Auto";
opendir(DIR, $directory) or die "couldn't open $directory: $!\n";
my @files = readdir DIR;
foreach (@files) {
open my $in_fh, '<', $_;
my @lines = <$in_fh>;
close $in_fh;
++$n;
$lines[0] =~ s/4947000219\K(4947000219+)/$1+$n/e;
$lines[1] =~ s{:20140924105028\K(\d+)}{
my $tp = Time::Piece->strptime($1, DATE_FORMAT);
($tp + ONE_MINUTE * 2 * $n)->strftime(DATE_FORMAT);
}e;
my $backup = "$_.backup";
unlink $backup if -f $backup;
rename $_, $backup;
open my $out_fh, '>', $_;
print $out_fh @lines;
close $out_fh;
}
closedir DIR;