Off topic:Getting Error message "Use of uninitialized value $lines[0] in substitution" in Perl
0
0
Entering edit mode
9.4 years ago

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;
perl software-error • 2.9k views
ADD COMMENT
This thread is not open. No new answers may be added
Traffic: 1837 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6