[EMAIL PROTECTED] wrote:
> 
> The following snippet is from "Advanced perl programming" by Sriram
> Srinivasan. A test program is also attached.
> If I print any other list element, it works fine but for
> the first element ( $array[1] ), it gives a warning. What's on??
> Perl version is 5.6.0 on RH Linux 7.

This is an error in the published code (I've submitted an errata to
O'Reilly.)


> /home/atul/myperl> ./tst.pl
> Use of uninitialized value in seek at /home/atul/myperl/TieFile.pm line 27.
> #!/usr/bin/perl -w
> /home/atul/myperl>
> 
> ----------------- Example Program ( tst.pl ) ----------------
> 
> [snip]
> 
> ----------------- Example Program ( tst.pl ) ----------------
> 
> --------------------- CUT HERE --------------------
> 
> [snip]
> 
> sub FETCH {
>    my ($obj, $index) = @_;
>    # Have we already read this line?
>    my $rl_offsets = $obj->[$F_OFFSETS];
>    my $fh = $obj->[$F_FILEHANDLE];
>    if ($index > @$rl_offsets) {

Change this line to:

   if ($index >= @$rl_offsets) {


>        $obj->read_until ($index);
>    } else {
>        # seek to the appropriate file offset
>        seek ($fh, $rl_offsets->[$index], 0);
>    }
>    return (scalar <$fh>);  # Return a single line, by evaluating <$fh>
> }



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to