Well, I could see a possibility here, but this is total
speculation as I do not know the underlying implentation
of the sysseek function.

Think of the case of function prototypes:

  sub f (\@) { print 'foo'; }
  my @a = qw(b c d e f z);
  f( @a[-2,-3,-1] );

I get this error:

  Type of arg 1 to main::f must be array (not array slice)

The prototype specifies that this function expects an actual array
to be passed in (and it addresses it via a ref). The fact that it
knows the difference between an array slice and an array I think
means that that info concerning the type of args being passed to
a subroutine can be known to the subroutine.

So, maybe the code author for sysseek, since it is a pretty
low level (as in close to the OS) function, made an assumption
that the parameters being passed in were 3 individual scalars.
It could then misbehave if an array slice is passed in instead.
Maybe a direct interface to a C-function call.

Again - pure thought conjecture here on my part as I do not
know the Perl guts nor the specifics of sysseek. 

> And curiously,  the error from the first is about the 
> number of parameters.

This statement adds strength to my conjecture as an array slice
could be a single parameter (rather than three).

--
Mike Arms


> -----Original Message-----
> From: Sisyphus [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, December 16, 2003 4:27 PM
> Cc: Win32 perl
> Subject: Re: seek parameters
> 
> 
> Glenn Linderman wrote:
> > Here's a strangeness:
> > 
> >     my $res = sysseek( @stk[ -2, -3, -1 ] );
> > 
> > fails to compile, but
> > 
> >     my $res = sysseek( $stk[ -2 ], $stk[ -3 ], $stk[ -1 ] );
> > 
> > compiles fine.  As far as I can tell, they have the same effect.
> > 
> > And curiously,  the error from the first is about the 
> number of parameters.
> > 
> 
> That would mean that '@stk[-2,-3,-1]' is being seen as other than 3 
> arguments. But that's impossible, isn't it ?
> 
> ('parameters' mean 'arguments' doesn't it ?)
> 
> I certainly can't explain it.
> 
> Cheers,
> Rob
 

_______________________________________________
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to