Hi Bob
I suggest you forget about regular expressions and use the library
function split() instead. Take a look at the code below.
HTH,
Rob
use warnings;
use strict;
my (@ukchecksum, @uktrackname);
open my $bhf_file, '<', '/home/bob/tmp/md5music'
or die "Could not open md5music: $!";
while (<$bhf_file>) {
my @fields = split ' ', $_, 2;
if (@fields < 2) {
print "Invalid data format at line $.\n";
next;
}
push @ukchecksum, $fields[0];
push @uktrackname, $fields[1];
}
print $ukchecksum[0];
print $uktrackname[0];
Bob Williams wrote:
Hi,
I am trying to split the lines in a file into two halves (at the first
space) each half going into an array. The code I have written is below. The
print command is there to test that things worked correctly, but it only
gives an error for each instance of the print command...
Use of uninitialized value within @uktrackname in print at
/home/bob/Documents/scripts/perl/music_md5_compare.pl line 22 (#1)
---Code---
#!/usr/bin/perl
use warnings;
#use strict;
#use diagnostics;
# perl script to compare two files of md5 checksums
#+and extract the lines which differ
open (BHF_FILE, "</home/bob/tmp/md5music")
or die "Could not open md5music: $!";
@bhffile = <BHF_FILE>;
close (BHF_FILE);
for (my $i = 0; $i <= $#bhffile; $i++){
$bhffile[$i] =~ m/(\s.+) ( .+)/;
push @ukchecksum, $1[$i];
push @uktrackname, $2[$i];
}
print @ukchecksum[0]; # Won't print - uninitialized value ???
print @uktrackname[0]; # Won't print - uninitialized value !!!
---Code---
What am I doing wrong?
Many thanks,
Bob
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/