I consider $_ is a value-copy of the loop-element, but as shown in a while loop inside a for loop, it seems that $_ is a reference of the loop-element.
On Sat, Dec 4, 2010 at 12:30 AM, Roche, Johnny <roc...@hmc.harvard.edu>wrote: > To my understanding, "$_" is the default input of the current running > script/program, hence, if you overwrite $_ in an inner loop, it will > overwrite $_ for the whole process. If you do not want to overwrite it, > you'll need to assign $_ to a scalar before entering the loop that will > overwrite $_. > > Does that help or am I way off base? > > Johnny Roche > Associate, Help Desk > Harvard Management Company > Tel: 617-720-6827 > Fax: 617-878-6827 > Email: roc...@hmc.harvard.edu > > -----Original Message----- > From: Odin Liu [mailto:odinushu...@gmail.com] > Sent: Friday, December 03, 2010 11:26 AM > To: Shawn H Corey; beginners@perl.org > Subject: Re: A strange problem with array outside I/O > > Interesting. So if I need deal with an array of files, and I have to use > the > array after reading each file. I have to save another copy of the array? > > Anyway, thanks for helping. > > On Sat, Dec 4, 2010 at 12:16 AM, Shawn H Corey <shawnhco...@gmail.com > >wrote: > > > On 10-12-03 11:12 AM, Odin Liu wrote: > > > >> Still confusing. We know that inner loop's $_ overwrite the outer loop's > >> $_ only in the inner loop. When the inner loop was over, the $_ would be > >> it was in outer loop before the inner loop begin. Outer $_ would be > >> restored by Perl automatically. > >> > >> But why this behavior changes when the inner loop is a diamond > >> operation? If it is a Perl syntax, then how can I open a list of file, > >> read their content, and then keep the file name list as it was? > >> > > > > No, the behaviour is different because the inner loop is a while one. A > > local copy of $_ would be made if the inner loop was another foreach one. > > > > > > > > -- > > Just my 0.00000002 million dollars worth, > > Shawn > > > > Programming is as much about organization and communication > > as it is about coding. > > > > The secret to great software: Fail early & often. > > > > Eliminate software piracy: use only FLOSS. > > > > > > -- > *Odin Liu > * > RD Engineer > work mail: liuyid...@baidu.com > blog: http://blog.odichy.org/ > profile: https://www.google.com/profiles/odinushuaia > > The information contained in this e-mail may be confidential and is > intended solely for the use of the named addressee. > Access, copying or re-use of the e-mail or any information contained > therein by any other person is not authorized. > If you are not the intended recipient please notify us immediately by > returning the e-mail to the originator. > -- *Odin Liu * RD Engineer work mail: liuyid...@baidu.com blog: http://blog.odichy.org/ profile: https://www.google.com/profiles/odinushuaia