beginner wrote: > Hi, Hello,
> I am trying to create an array of references but am getting stuck at > how/when to push the reference into the array > > Below is some sample data and a snip of what I have been trying. What > is happening is that the reference $times is getting pushed into the > array before all the keys are defined so I am getting > > [snip] > > what I'd like is > > $VAR11 = { > 'dom' => '09', > 'day' => 'Fri' ' > 'morning' => '09:24', > 'out' => '13:10', > 'back' => '14:17', > 'home' => '16:09' > }; > > Can someone point out where I am going wrong please. > > > ======== My effort =============== > use strict; > use warnings; > > ...snip > > my @times; > my ($i,$key,$day,$dom,$mon,$time,$hour,$week_starting); > my $times; > while (defined($i = <FH>)) { > next if ($i !~ /^(x|j|k|z)/); > chomp($i); > > # day dom > mon time hour > ($key,$day,$dom,$mon,$time,$hour) = ($i =~ > /^(\w)\s+(\w+)\s+(\d+)-(\w+)-\d+\s+(\d+:\d+):.*(\d+:\d+|-\d+:-\d+)/); > my $colour = 'black'; > > if ($key =~ /x/i ) { > $times = { > day => $day, > dom => $dom, > morning => $time, > }; > } > elsif ($key =~ /j/ ) { > $times = { out => $time}; > } > elsif ($key =~ /k/) { > $times = { back => $time}; > } > elsif ($key =~ /z/) { > $times = { home => $time}; > } > push(@times,$times); > } It looks like you need something like: if ( 'x' eq lc $key ) { push @times, { day => $day, dom => $dom, morning => $time, }; } elsif ( 'j' eq $key ) { $times[ -1 ]{ out } = $time; } elsif ( 'k' eq $key ) { $times[ -1 ]{ back } = $time; } elsif ( 'z' eq $key ) { $times[ -1 ]{ home } = $time; } } John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>