Dear List

I need to delete each element after every execution of  the foreach loop and
I need to update & sorted the @arr1 after every execution of the foreach
loop. I have tried a lot but not able to do this ............Pls
help...........

Thanks & Regards
Anirban Adhikary

On Mon, Feb 25, 2008 at 1:51 PM, John W. Krahn <[EMAIL PROTECTED]> wrote:

> Anirban Adhikary wrote:
> > Dear List
>
> Hello,
>
> > I have written the following code .............
> >
> > use Data::Dumper;
> >
> >
> > %file = (14 => "GGG",
> >          11 => "AAA",
> >         101 => "EEE",
> >           1 => "TTT");
> >
> >
> > print Dumper \%file;
> >
> >
> >
> > @arr1 = sort { $file{$b} cmp $file{$a} } keys %file; #the oldest entry
> lies
> > at the top position
> >
> > print Dumper [EMAIL PROTECTED];
> >
> > foreach $el(@arr1)
> > {
> >
> > delete $file{$el};
> > print "The $el is removed from the sorted list"."\n";
> > @arr1 = sort { $file{$b} cmp $file{$a} } keys %file; #the oldest entry
> lies
>
> perldoc perlsyn
> [ SNIP ]
>     If any part of LIST is an array, "foreach" will get very confused if
>     you add or remove elements within the loop body, for example with
>     "splice".   So don't do that.
>
>
> > at the top position
> > print "After sorting the array elements are"."\n";
> > print Dumper [EMAIL PROTECTED];
> > }
> >
> >
> > ---------------output ------------
> >
> > $VAR1 = {
> >           '1' => 'TTT',
> >           '11' => 'AAA',
> >           '101' => 'EEE',
> >           '14' => 'GGG'
> >         };
> > $VAR1 = [
> >           '1',
> >           '14',
> >           '101',
> >           '11'
> >         ];
> > The 1 is removed from the sorted list
> > After sorting the array elements are
> > $VAR1 = [
> >           '14',
> >           '101',
> >           '11'
> >         ];
> > The 101 is removed from the sorted list
> > After sorting the array elements are
> > $VAR1 = [
> >           '14',
> >           '11'
> >         ];
> >
> > In the last output I think the list is not sorted properly. How can I
> solve
> > this problem.
>
> It is sorted properly, it's just that you are modifying the array @arr1
> inside a foreach loop that iterates over that same array and you
> shouldn't do that.
>
>
>
> John
> --
> Perl isn't a toolbox, but a small machine shop where you
> can special-order certain sorts of tools at low cost and
> in short order.                            -- Larry Wall
>
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> http://learn.perl.org/
>
>
>

Reply via email to