I'm trying to figure out why the correct data shows up when it's in the script, but when i reference the same data in a text file I get different (and wrong) results:
WORKS:
my @accounts = split /\n/, <<EOT;
1,joe,123 First St.
2,mary,234 Second St.
EOT
my @purchases = split /\n/, <<EOT;
1,222,veg,01/05/05
1,444,fruit,02/04/05
1,555,bread,03/09/06
1,777,butter,05/07/05
1,888,spice,09/06/07
1,999,coffee,02/06/05
2,444,veg,01/01/06
EOT
my $accounts_by_id = {};
for (@accounts) {
my($id, $rest) = split /,/, $_, 2;
$accounts_by_id->{$id}->{info} = $rest;
}
for (@purchases) {
my($id, $rest) = split /,/, $_, 2;
push @{$accounts_by_id->{$id}->{purchases}}, $rest;
}
for (@accounts) {
my($id, $rest) = split /,/, $_, 2;
{
my @five = splice
@{$accounts_by_id->{$id}->{purchases}}, 0, 5;
last unless @five;
print "$id,$accounts_by_id->{$id}->{info},",
join(',', @five), "\n";
print "<br>";
redo if @five == 5;
}
}
RETURNS THE FOLLOWING:
1,joe,123 First St.,222,veg,01/05/05,444,fruit,02/04/05,555,bread,03/0
+9/06,777,butter,05/07/05,888,spice,09/06/07
1,joe,123 First St.,999,coffee,02/06/05
2,mary,234 Second St.,444,veg,01/01/06
DOESN'T WORK:
open( XLSFILE, $file ) or die "could not open $file $!";
open( XLSFILE2, $file2 ) or die "could not open $file $!";
my @accounts;
my $accounts;
my @purchases;
my $purchases;
while (<XLSFILE>){
@accounts = split /\n/,$_;
foreach $accounts(@accounts)
}
while (<XLSFILE2>){
@purchases = split /\n/,$_;
}
my $accounts_by_id = {};
for (@accounts) {
my($id, $rest) = split /,/, $_, 2;
$accounts_by_id->{$id}->{info} = $rest;
}
for (@purchases) {
my($id, $rest) = split /,/, $_, 2;
push @{$accounts_by_id->{$id}->{purchases}}, $rest;
}
for (@accounts) {
my($id, $rest) = split /,/, $_, 2;
{
my @five = splice
@{$accounts_by_id->{$id}->{purchases}}, 0, 5;
last unless @five;
print "$id,$accounts_by_id->{$id}->{info},",
join(',', @five), "\n";
print "<br>";
redo if @five == 5;
}
}
RETURNS THE FOLLOWING:
1,joe,123 First St.
2,mary2,234 Second St.
1,222,veg,01/05/05
1,444,fruit,02/04/05
1,555,bread,03/09/06
1,777,butter,05/07/05
2,444,veg,01/01/06
2,444,veg,01/01/06
2,444,veg,01/01/06
2,444,veg,01/01/06
2,444,veg,01/01/06
2,444,veg,01/01/06
2,mary2,234 Second St.,444,veg,01/01/06