问题。我试图从命令行读取perl字符串,例如“abcdef”然后将其拆分为“a_b_c_d_e_f”。
我正在努力学习逻辑部分。任何想法?
#!/usr/bin/perl
while($line=<STDIN>){
chomp $line;
split $line;
join ("_", $line);
print $line;
}
答案 0 :(得分:3)
The split
manpage实际上包含了这个例子:
print join(':', split('', 'abc')), "\n";
调整使用_
代替:
和$line
代替'abc'
,我们得到:
print join('_', split('', $line)), "\n";
最重要的一点是split
不修改其参数,它只返回一个列表,join
不修改其参数,它只返回一个字符串。因此,在不使用返回值的情况下调用split
或join
永远不会有意义。
答案 1 :(得分:1)
您需要的是
print join('_', split //, $line), "\n";
答案 2 :(得分:0)
答案 3 :(得分:0)
除非必须使用split
,否则您可以使用字符间替换:
use strict;
use warnings;
my $string = 'abcdef';
$string =~ s/(?<=.)(?:)(?=.)/_/g;
print $string;
输出:
a_b_c_d_e_f
希望这有帮助!