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]