Perl段落生成器丢失标点符号
我需要生成随机文本的段落。在每个句子的结尾我想加上标点符号,作为一个句子,起始词应该大写。到目前为止,我有:Perl段落生成器丢失标点符号,perl,Perl,我需要生成随机文本的段落。在每个句子的结尾我想加上标点符号,作为一个句子,起始词应该大写。到目前为止,我有: #!/usr/local/bin/perl -w -U use English; sub cWord { return "C"; } sub lWord { return "l"; } my $paras = 3; my $limit = 15; my ($w, $wMax); my @words; my $pMax = 3 + rand $paras;
#!/usr/local/bin/perl -w -U
use English;
sub cWord {
return "C";
}
sub lWord {
return "l";
}
my $paras = 3;
my $limit = 15;
my ($w, $wMax);
my @words;
my $pMax = 3 + rand $paras;
for (my $p=0; $p<$pMax; $p++)
{
$wMax = 5 + rand $limit;
for ($w=0; $w<=$wMax; $w++)
{
push @words, (!$w ? &cWord : &lWord) . ($w == $wMax ? '. ' : '');
}
}
print join ' ', @words;
print "\n";
print @words;
你忘了做类型转换
int(rand $limit);
这将解决您的问题。
没有这一点,您的代码将永远无法执行
$w == $wMax
$w
永远不会等于$wMax
,因为您正在将$wMax
设置为介于5和20之间的随机浮点值。您可能需要int rand$limit
。始终使用严格和警告(而不是-w)。Arrgh;该死的浮子;我想就是这样!是的;用int()包装rand result的技巧是:cl。C l l l l。l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l。l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l。clllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll。克莱尔。clllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll。clllllllll.
`
$w == $wMax