perl - Operator to read a file using file handle -
i trying read file,
while($line = $file_handle)
when ran code, program hung.
i noticed read file using file handle, need used <>
while($line = <file_handle>)
the later code ran.
now know operator <> read file line line, want know happening when dont provide <> operator? not able find end of line ?or?
thankyou
short file read <>
operator without it assignment, infinite loop.
the while (...) { ... }
checks condition inside ()
, if true executes body in block {}
. keeps doing until condition in ()
evaluates understood false (generally 0
, '0'
, ''
, or undef
). operator <>
provides, example, have idiom
while (my $line = <$file_handle>) { ... }
the <>
operator reads line @ each iteration resource $file_handle
associated , when reaches end-of-file returns undef
loop terminates , program execution continues @ next statement after loop. diamond operator <>
operator form function readline
. see i/o operators in perlop. work $file_handle
has valid resource can retrieve data.
without <>
operator nothing read anywhere, there assignment. code following. copies variable $file_handle
variable $line
. return value of operation in perl value ends in $line
, , if 'truthy' value body { ... }
executed. $file_handle
evaluates 'true', otherwise loop body not execute once , program continue. $line
true, too. if $file_handle
doesn't change in body {...}
of loop condition true.
then whatever in body keeps being executed, without reason loop terminate, , never returns control program. it's infinite loop, , program appears hang.
note used deliberately , may see code like
while (1) { # compute needed # recalculate condition when stop last if $condition_to_terminate; }
this approach can risky though, since condition can more , more complicated , error sneak in, in case end infinite loop. there clearer ways control loops.
a different example event loop, crucial enter infinite loop can wait event of sort, @ point particular action taken. how gui's work, example, , number of other systems.