in reply to Re: Re: Re: Re: Tie::File is sucking the life out of me
in thread Tie::File is sucking the life out of me

It seems unlikely that Tie::File is silently failing to open the file. Did your original code have the "or die..." part as part of the 'tie' statement?

The permissions issue can crop up if your script has read-only permission. Tie::File by default tries to open for read/write. If you want it to open for read-only, you have to use the mode attribute when you initiate the tie.


Dave

  • Comment on Re: Re: Re: Re: Re: Tie::File is sucking the life out of me

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Re: Tie::File is sucking the life out of me
by ysth (Canon) on Apr 27, 2004 at 10:44 UTC
    If the original script had the same "tie" line as the example shown, it has "|| die" where it should have "or die", so errors returned by tie would have been ignored.
      Great catch!!! It's an issue of precedence. To elaborate, || is higher up the food chain, and essentially acts upon the last argument of tie instead of on the return value of tie, because parenthesis weren't used. If the OP had used 'or' instead, he would have found that the script dies as he attempts to tie the array, because 'or' is lower down on the precedence list, and thus will attempt instead to act upon the return value of tie.

      There's a tutorial on the logical short circuit operators that discusses precedence: Perl Idioms Explained - && and || "Short Circuit" operators. Since I wrote it, I'm ashamed that I missed the OP's bug. ;)

      Good job ysth. That's it, I'm sure. ;)


      Dave