如何让Perl用每个变量重复整个句子

k4emjkb1  于 2023-10-24  发布在  Perl
关注(0)|答案(5)|浏览(135)

考虑:

#! /usr/bin/perl
@no = (1 .. 20000);
foreach(@no) {
    print "<div id=\"world@no\" onclick=\"javascript:showDiv_postscreen(); javascript:hideDiv_welcomebuttons()\">&nbsp;</div>\n";
}

这是我的Perl脚本,但是我如何让它每次都用新变量重写句子呢?
也就是说,我如何让它输出以下内容?

<div id="world1" onclick="javascript:showDiv_postscreen(); javascript:hideDiv_welcomebuttons()">&nbsp;</div>
.
.
.
<div id="world20000" onclick="javascript:showDiv_postscreen(); javascript:hideDiv_welcomebuttons()">&nbsp;</div>
tct7dpnv

tct7dpnv1#

您的主要问题是将整个数组插入到字符串中,而不是循环变量中(在您的示例中为$_,因为您没有指定一个变量,但我更喜欢给予它一个名称)。
你可以通过为你的字符串使用一个不同的后缀来避免转义" s:

use strict;
use warnings;
for my $world_no (1..20000) {
    print qq!<div id="world$world_no" onclick="showDiv_postscreen(); hideDiv_welcomebuttons()">&nbsp;</div>\n!;
}

另外,“JavaScript:“只在<a href="...">这类需要url,而你想提供javascript代码的情况下才需要,onclick不需要,当然也不需要两次。

vfwfrxfs

vfwfrxfs2#

#!/usr/bin/perl 
my @no = (1 .. 20000); 
foreach my $i (@no) { 
    print "<div id=\"world$i\" onclick=\"javascript:showDiv_postscreen(); javascript:hideDiv_welcomebuttons()\">&nbsp;</div>\n"; 
}
velaa5lx

velaa5lx3#

#! /usr/bin/perl
@no = (1 .. 20);
foreach $x (@no) {
print "<div id=\"world$x\" onclick=\"javascript:showDiv_postscreen()\;javascript:hideDiv_welcomebuttons()\">&nbsp;</div>\n";
}
i5desfxk

i5desfxk4#

print语句中的@会让解释器感到困惑。而且,这也不是你想要的,因为print "@no"会打印出和join(' ',@no)一样的东西。相反,你想把@no的每个元素插入到打印出来的字符串中:

#! /usr/bin/perl 
use strict;
use warnings; #Always use these!
my @no = (1 .. 20000); 
foreach(@no) { 
print "<div id=\"world" . $_ . "\" onclick=\"javascript:showDiv_postscreen(); javascript:hideDiv_welcomebuttons()\">&nbsp;</div>\n"; 
}
yzckvree

yzckvree5#

我会考虑使用一个变量来计数,而不是定义一个范围。这可能感觉不那么直观,但事实并非如此。
此外,您可以使用qq()来代替转义双引号(\"),这是等效的。

my $i = 1;
print qq(<div id="world$i" onclick="javascript:showDiv_postscreen(); javascript:hideDiv_welcomebuttons()">&nbsp;</div>\n) while ($i++ <= 20_000);

相关问题