On Mon, Jun 07, 1999 at 10:54:30AM +1000, Peta Adams / John Murray wrote: > I'm getting compilation errors when I try and run script, and I can't see > why. Why do I need defined() ... dosn't "$linein = <ALLTIMES>" return true > or false in the if context?. All expressions return true or false in a boolean context. That is, after all, the nature of boolean contexts. The question is when the expression is true, and when it is false. In this case, $linein = <ALLTIMES> is false if the line happens to be '0' (the character zero). But you don't want that to be false, because the input was successful. So test with defined() instead: if (defined ($linein = <ALLTIMES>)) { Note that the defined() is done automatically in perl5.005. > THE ERRORS: > # syntax error, near "if $alltimes" > File 'Hard Disk:Desktop Folder:MyScripts:Workgroup:FindTimesThisUser'; Line 31 > # Value of <HANDLE> construct can be "0"; test with defined(). > File 'Hard Disk:Desktop Folder:MyScripts:Workgroup:FindTimesThisUser'; Line 28 > # syntax error, near "}" > File 'Hard Disk:Desktop Folder:MyScripts:Workgroup:FindTimesThisUser'; Line 34 > # Execution of Hard Disk:Desktop > Folder:MyScripts:Workgroup:FindTimesThisUser aborted due to compilation > errors. > > #The file with database, and the file to output to > open (ALLTIMES, '<timeson.txt'); > open (FOUNDTIMES, '>found.txt'); Always check the result of your open()s! > if $alltimes[0] eq $username { I'll let you figure this one out for yourself. Ronald ===== Want to unsubscribe from this list? ===== Send mail with body "unsubscribe" to macperl-request@macperl.org