PRADEEP GOEL said:
>
> ----- Original Message -----
> From: "Paul Johnson" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Cc: <[EMAIL PROTECTED]>
> Sent: Monday, December 02, 2002 5:01 PM
> Subject: Re: a Bug in PERL
>
>
>>
>> PRADEEP GOEL said:
>> > If i am not wrong somewhere , there is a bug come to my notice , in
>> PERL
>> >
>> > @lastnotpop =
>> ("where_gone_me","remaining_is_alright","no_fear_now"); foreach
>> $faltu (@lastnotpop)  #$faltu is extra doesn't makes difference even
>> if removed
>> > { $pch = pop(@lastnotpop );
>> >  print " \n  can't pop last  one from @lastnotpop
>> i.e.($lastnotpop[0] )
>> > :
>> > popped element is  $pch #";
>> >  }
>> > If there are more than one elemnt in a array(say @lastnotpop  than
>> the last/first element i.e.
>> > $lastnotpop[0]  can't be popped out in this single foreach loop.
>> >
>> > I don't think it's intensional feature , else it should also not be
>> able to pop the only
>> > element , if it has one , but it does.
>>
>> This is a case of "Doctor, it hurts when I ...".
> lllllllllllllllllllll  I haven't heard about this case
>  do u mean when " i strike at some wrong place "

I suppose so.

Patient:  Doctor, it hurts when I raise my arm.
Doctor:   Well, don't do that then.

>> If you look in perlsyn, under the heading "Foreach Loops", you will
>> see:
>>
>>   If any part of LIST is an array, C<foreach> will get very confused
>> if you add or remove elements within the loop body, for example with
>> C<splice>.   So don't do that.
> llllllllllllllllllll -  whether C<foreach>  will get confused or not ,
> but i have already,
> since this is a common procedure , in any programming language to remove
> /add elements
> of an array in a loop .

Yes, but not the array over which you are iterating.

I am unclear as to what your posted code should do.  I can think of a
number of interpretations.  Perl says that this behaviour is undefined. 
This means that it doesn't need to give a (possibly arbitrary)
interpretation and allows the implementation the flexibility to be coded
for speed.

>  & also that any programming language must follow some sure mathematical
> rules & should not get confused .

The rule is "don't do that".  Most languages have rules like that for
various situations.  In C, for example, a statement such as i = i++ is
unedefined behaviour.  The compiler may do what it will with that
statement and the whole program.

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net




-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to