-2

我有 2 个生成简单 HTML 输出的函数

  sub one_data {} 

  sub generate_page {}

generate_page 是生成所有内容的“肉和土豆”,但是 one_data{} 函数会生成少量 html(div 等)

我正在尝试将其添加到 generate_page 执行的一段代码中,例如:

$npage .= sprintf "<div class=sidepage>%s</div>", &one_data();

即使 one_data 是一个简单的字符串,这似乎并没有完成我正在做的事情(理论上它应该按照 perldoc sprintf 工作。

我也试过这个,即:

my $data = &one_data();
$npage .= sprintf "<div class=whatever>%s</div>", $data;

但格式修饰符“%s”始终只包含数字 1。

One_data /does/ 工作,因为我已将它移动到一个简单的 perl 脚本中,它会显示所需的 html 输出。

4

2 回答 2

2

你的one_datasub 应该使用明确的return语句:

use warnings;
use strict;

my $npage .= sprintf "<div class=sidepage>%s</div>", one_data();
print "$npage\n";

sub one_data {
    return 'foooo';
}

__END__

<div class=sidepage>foooo</div>

如果您的子使用print而不是return,则子返回的值将是1(假设print成功)。另请参阅perldoc perlsub

于 2013-09-26T19:07:27.170 回答
0

通过在函数中添加人工睡眠来解决此问题,因为它返回得太早/超时。

于 2013-09-27T03:54:03.050 回答