in reply to Re: Re: Re: Tie::File strangeness with unshift
in thread Tie::File strangeness with unshift

L~R ... thanks for taking the time with me..

It turns out that my test code (above) does indeed reproduce the problem, but only on the server in question, not my local machine (yes, the overall script is CGI).

The last error messages seem to be relevant too. When i run this script:

#!/usr/bin/perl -Tw use Tie::File; use strict; my @array; my $file = "./file.txt"; my $line = "this is a really long line of text (sortof)"; tie @array, 'Tie::File', $file; unshift @array, $line; untie @array

from the command line, i get:
bash-2.05a$ ./tie
Use of uninitialized value in read at /usr/lib/perl5/5.6.1/Tie/File.pm line 699, <FH> line 7. Use of uninitialized value in read at /usr/lib/perl5/5.6.1/Tie/File.pm line 699, <FH> line 7.

Line 7 of my script is the "my @array;" declaration

The target file is modified, but not as expected, and repeated executions of the test script don't change the file any further. I'm beginning to suspect my installation of Tie::File or Perl itself, since on my local machine this exact same script works as one would think it should.

perl -v reports v5.6.1

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Tie::File strangeness with unshift
by Limbic~Region (Chancellor) on May 26, 2003 at 00:41 UTC
    914,
    Just guessing here - try:

    tie my @array, 'Tie::File', "file.txt";

    instead of the 3 lines you had before.

    This is probably a difference in versions of Perl builds or in Tie::File. If my suggestion works - chalk it up to dumb luck - if it doesn't - try updating your Tie::File module on the server that doesn't work.

    Cheers - L~R

      Actually, the server that doesn't work was using Tie:File 0.95, whereas my local machine is using 0.93 (as well as Perl 5.6.1, just like the server)

      I uninstalled 0.95 and reinstalled w/ 0.93 just to see, same dice.

      I've made the change you suggested, and unfortunately dumb luck isn't with me. See below for the results. (the file.txt file starts out with 7 identical lines, and ends as you see)

      bash-2.05a$ vi tie bash-2.05a$ ./tie Use of uninitialized value in read at /usr/lib/perl5/5.6.1/Tie/File.pm + line 699, <FH> line 7. Use of uninitialized value in read at /usr/lib/perl5/5.6.1/Tie/File.pm + line 699, <FH> line 7. bash-2.05a$ cat file.txt this is a really long line of text (sortof) TestText TestText TestText TestText TestText TestText TestText TestText TestText TestText TestText TestText TestText TestText TestText TestText bash-2.05a$
      Note the complaints about line 699 of File.pm.....