问题。我正在尝试从命令行读取perl字符串,例如"abcdef",然后将其拆分为"a_b_cd_e_f"。
我在逻辑部分很吃力。有什么想法吗?
#!/usr/bin/perl
while($line=<STDIN>){
chomp $line;
split $line;
join ("_", $line);
print $line;
}
split
手册页实际上包括以下示例:
print join(':', split('', 'abc')), "n";
调整为使用_
代替:
,使用$line
代替'abc'
,我们得到:
print join('_', split('', $line)), "n";
最重要的一点是,split
不修改其参数,它只返回一个列表,而join
不修改参数,它只是返回一个字符串。因此,在不使用返回值的情况下调用split
或join
是没有意义的。
您需要的是
print join('_', split //, $line), "n";
一行:
print join('_', split('', $line)), 'n';
您可以在这里阅读更多关于perl的split()
函数的信息。
除非必须使用split
,否则可以使用字符间替换:
use strict;
use warnings;
my $string = 'abcdef';
$string =~ s/(?<=.)(?:)(?=.)/_/g;
print $string;
输出:
a_b_c_d_e_f
希望这能有所帮助!