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