请问是不是应该这样的?

Meteorlet 2005-01-24 05:55:22
以下这段代码在Perl5.8会出现Server Error,但是如果把my改成local就能通过了,难道不能传递指针给my?初学PERL请多多指教。

#!/usr/bin/perl

print ("Content-Type: text/html;\n\n");

@myarray = (1,2,3,4,5,6,7,8,9);
&my_sub(*myarray);
sub my_sub
{
my(*subarray) = @_; // 这里my改成local就ok了
print (@subarray);
}
...全文
91 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
AllCHN 2005-01-26
  • 打赏
  • 举报
回复
这不是指针,Perl里没有指针,你这里传递的是一个 glob, 同时包含标量、数组、散列、代码等的变量,我记得好像有5项或者6项内容包含在一个 glob 变量中,根据上下文决定使用哪一个。
glob 不能做语句体内部的局部变量,所以用 my 不能工作。

至于指针,似乎用引用的方式更接近一些。例如你上面的例子改为:

#!/usr/bin/perl

print ("Content-Type: text/html;\n\n");

@myarray = (1,2,3,4,5,6,7,8,9);
&my_sub(\@myarray);
sub my_sub
{
my $subarray = $_[0];
print @$subarray; # 用 @{$subarray} 更直观可读
}
Meteorlet 2005-01-26
  • 打赏
  • 举报
回复
没人回答吗?自己顶

2,204

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 CGI
社区管理员
  • CGI社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧