http://www.perlmonks.org?node_id=402249

perlcapt has asked for the wisdom of the Perl Monks concerning the following question:

I'm having problems getting tell() to return a value other than 0 after doing a sysread().
# in a loop after appropriate open $bytes = sysread($self->{FH},$self->{buffer},1024); print tell($self->{FH}),"\n";
$bytes is a lovely 1024, and there is good stuff in the buffer, but tell() is always returning 0; Is it my reference to a filehandle which works fine for sysread, but not for tell?
perlcapt
-ben
Update: merlyn explains why it doesn't work. The manual says to use sysseek(FH,0,1) which returns the offset just as implied. Problem understood and solved

Replies are listed 'Best First'.
•Re: tell() on sysread()
by merlyn (Sage) on Oct 25, 2004 at 15:41 UTC
      are you certain? beacuse the following works for me
      perl -e'open FH,"<test.pl"||die$!;$fh=\*FH;sysread($fh,$foo,256); $bar=tell($fh);print"$foo\n$bar\n";'
        Yet it fails miserably on Win32. The side-effects of using sysread are system-specific.