On 4/6/07, Jeff Pang <[EMAIL PROTECTED]> wrote:
> >So, if I put a filehandle in the diamond, instead of empty diamond, >does that mean that the first would operate line by line and the >second would pull the whole file into memory? > When the diamond(<>) is appeared with while(),it means you read the file line by line. ig,while(<FILEHANDLE>){ .. } and while(<>} { .. } are almost the same. When the diamond(<>) is appeared on list context,it would read all file content in memory at one time. ig, my @file = <FILEHANDLE>; or, my @file = sort { ...} <FILEHANDLE>; my @file = map { ...} <FILEHANDLE>; my @file = grep { ... } <FILEHANDLE>; This would slurp all the file content into memory. but,when the diamond(<>) is appeared on scalar context,it just read one line each time. ig, my $file = scalar <FILEHANDLE>; or, my $file = <FILEHANDLE>; or just say, <FILEHANDLE>; This would read only one line in that file into memory.
snip Where a "line" is defined as a string of bytes ending with the value in $/ (usually \n) -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/