Mathias Pasquay wrote:
> Dear list,

Hello,

> i'am just wondering about the behaviour of shift and the defaultvariable @_ .
> 
> I use the following code::
> 
> while (<RULEFILE>) {                     # each line of RULEFILE is stored in 
> $_
>       chomp;                            # delete \n from $_
>       split /;/;                           # split the fields of $_ seperated 
> by ; into @_

You should have gotten the warning "Use of implicit split to @_ is
deprecated" which means that you shouldn't do that.  You should enable
warnings.

       my @array = split /;/;


>       print "Array before shift: @_\n";         # prints @_              
>       my $test = shift @_;                            # $test gets the first 
> item from @_
>       print "Array after shift: @_\n";            #  print @_ without the 
> first item
> }     
> 
> everything works fine.
> 
> Now i change the line "my $test = shift @_" into "my $test = shift". This 
> should work because shift should use @_ by default.

No, in this case it uses @ARGV by default.

perldoc -f shift


> But in this case $test is empty an the second print command prints still the 
> whole @_.
> 
> I really don't know why this should not work?
> 
> I would be happy about any help.


John

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to