在perl语言中,数组参数的传递只能在同一个文件中实现。当你用require包含一个子文件,并调用子文件中的函数时,无法正确的传入数组参数,请参看如下代码test.pl:
#!usr/bin/perl
#require 'myutils.pl';
my @test = ("hello","world","dlt_test");
my $sss = ("sss test");
sub test_argument(/@$)
{
print "@_/n";
my ($list,$calcar)=@_;
print "$list/n";
print "ttt=$calcar/n";
foreach my $temp (@$list)
{
print "list=$temp /n";
}
}
test_argument(@test,$ttt);
该代码能获取与其的结果:@test的值赋给list,$sss的值赋给$scalcar
但是如故把test_argument的实现放到myutisl.pl中,则无法获取与其的值。通过调试可知道,跨越文件的函数
调用把所有的参数组装成了一个数组来传递,因此子函数无法分割出实参的原始格式。
我们可通过下面的方法现对数组+字符串的参数的分割:
sub mytest_argument(/@$) { my $count = @_; my @list = @_[0..$count-2]; my $calcar =
在perl语言中,数组参数的传递只能在同一个文件中实现。当你用require包含一个子文件,并调用子文件中的函数时,无法正确的传入数组参数,请参看如下代码test.pl:
#!usr/bin/perl #require 'myutils.pl'; my @test = ("hello","world","dlt_test"); my $sss = ("sss test"); sub test_argument(/@$) { print "@_/n"; my ($list,$calcar)=@_; print "$list/n"; print "ttt=$calcar/n"; foreach my $temp (@$list) { print "list=$temp /n"; } } test_argument(@test,$ttt); 该代码能获取与其的结果:@test的值赋给list,$sss的值赋给$scalcar
但是如故把test_argument的实现放到myutisl.pl中,则无法获取与其的值。通过调试可知道,跨越文件的函数
调用把所有的参数组装成了一个数组来传递,因此子函数无法分割出实参的原始格式。
我们可通过下面的方法现对数组+字符串的参数的分割:
___FCKpd___4
[$count-1]; foreach my $temp (@list) { print "list=$temp /n"; } print "ttt=$calcar/n"; }
___FCKpd___5