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/


Reply via email to