【发布时间】:2017-05-22 07:39:34
【问题描述】:
在这里,我尝试使用 perl cgi 将变量从一个子例程传递到另一个子例程。但是我的变量没有从一个子例程传递到另一个,
use strict;
use warnings;
use CGI ':standard';
print header;
print start_html("example");
print end_html;
my $file = "text.txt";
open my $fh,'<', $file or die $!;
sub1($fh);
sub2($fh);
sub sub1 {
my $fh = shift;
while ( my $line = <$fh> ) {
print $line;
}
return $fh;
}
sub sub2 {
my $line = shift;
print start_form;
print "<table>";
print "<th>content</th>";
print "<tr>";
print "<td>$line<td>";
print "</tr>";
print "</table>";
print end_form;
}
在上述子例程中(即 sub2 $line 内容不是从 sub1 传递的)
【问题讨论】:
-
您传递文件句柄 ($fh) 而不是“普通”变量 ($line)
-
您提供给我们的代码无法编译。向我们展示您的实际代码。但 Jens 可能是对的 - 你打电话给
sub2($fh),然后尝试使用$fh,就好像它是一条线一样。 -
我自己已经调用了 sub2($fh) @Sobrique
-
您想将哪个变量从一个子程序传递到另一个子程序?您的代码根本不这样做。您将相同的变量 (
$fh) 传递给两个不同的子例程。但是您的sub2()看起来您打算从文件中传递一行而不是文件句柄。