Chinaunix首页 | 论坛 | 博客
  • 博客访问: 65744
  • 博文数量: 14
  • 博客积分: 328
  • 博客等级: 一等列兵
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-22 12:19
文章分类

全部博文(14)

文章存档

2012年(14)

分类: Python/Ruby

2012-11-14 15:25:39

向perl的一个子程序传递多个参数时,如果在子程序中定义的第一个接收参数是以数组参数接收时,它会将传递进来的所有参数放到子程序中定义的第一个数组接收参数。如下面的代码所示:


点击(此处)折叠或打开

  1. sub argument{
  2.    my (@filename,$filetimes)=@_;
  3.    print "\$filetime : $filetime\n";
  4.    print "\@filenames : $_\n" for (@filenames);
  5. }

现在传递两个参数为:

点击(此处)折叠或打开

  1. $filename=file4;
  2. @filenames=(file1,file2,file3);

调用子程序:

点击(此处)折叠或打开

  1. &argument(@filenames,$filename);

输出结果为:

点击(此处)折叠或打开

  1. $filetime :
  2. @filenames : file1
  3. @filenames : file2
  4. @filenames : file3

相反,如果将子程序中的形参改为如下所示,就会正常显示:

点击(此处)折叠或打开

  1. sub argument{
  2.    my ($filetimes,@filename)=@_;
  3.    print "\$filetime : $filetime\n";
  4.    print "\@filenames : $_\n" for (@filenames);
  5. }

同样以上面的实参调用子程序,输出结果如下:


点击(此处)折叠或打开

  1. $filetime : file4
  2. @filenames : file1
  3. @filenames : file2
  4. @filenames : file3

阅读(1120) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~