我想要一个perl程序,我可以通过以下方式调用:
perl myProgram --input="This is a sentence"
然后让perl以这种格式将输出打印到终端
word1 = This
word2 = is
word3 = a
word4 = sentence
我通常是一名c / c ++ / java程序员,但我最近一直在关注perl,我无法理解它。
答案 0 :(得分:4)
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
my $input = '';
GetOptions( 'input=s' => \$input );
my $count = 0;
for (split ' ', $input) {
printf("word%d = %s\n", ++$count, $_);
}
答案 1 :(得分:1)
请查看perldoc split()。
foreach my $word (split (/ /, 'This is a sentence'))
{
print "word is $word\n";
}
修改:围绕split
来电添加了括号。
答案 2 :(得分:1)
'split'不处理多余的前导,尾随和嵌入空格。最好的选择是重复匹配非空格字符m{\S+}gso
。
第一个命令行参数是$ARGV[0]
。把它们放在一起我们有:
#! /usr/bin/perl
use strict;
use warnings;
my @words = $ARGV[0] =~ m{\S+}gso;
for (my $i = 0; $i < @words; $i++) {
print "word", $i + 1, " = ", $words[$i], "\n";
}
(我仅使用索引迭代数组,因为问题最初的框架是每行发出一个上升值。通常我们只想使用for
或foreach
直接迭代列表。)
呼叫:
perl test.pl ' This is a sentence '
打印:
word1 = This
word2 = is
word3 = a
word4 = sentence
如果您明确想要获取双短划线选项名称的输入,请使用Quentin所描述的Getopt :: Long。