向perl的一个子程序传递多个参数时,如果在子程序中定义的第一个接收参数是以数组参数接收时,它会将传递进来的所有参数放到子程序中定义的第一个数组接收参数。如下面的代码所示:
- sub argument{
- my (@filename,$filetimes)=@_;
- print "\$filetime : $filetime\n";
- print "\@filenames : $_\n" for (@filenames);
- }
现在传递两个参数为:
- $filename=file4;
- @filenames=(file1,file2,file3);
调用子程序:
- &argument(@filenames,$filename);
输出结果为:
- $filetime :
- @filenames : file1
- @filenames : file2
- @filenames : file3
相反,如果将子程序中的形参改为如下所示,就会正常显示:
- sub argument{
- my ($filetimes,@filename)=@_;
- print "\$filetime : $filetime\n";
- print "\@filenames : $_\n" for (@filenames);
- }
同样以上面的实参调用子程序,输出结果如下:
- $filetime : file4
- @filenames : file1
- @filenames : file2
- @filenames : file3
阅读(1120) | 评论(0) | 转发(0) |