的Perl:字符串,分割字符串的foreach数组,每个字符串设定为一个新的数组
问题描述:
我有一个字符串输入,可以说这是:的Perl:字符串,分割字符串的foreach数组,每个字符串设定为一个新的数组
junk 0 0 :::1000
junk 0 0 :::1001
junk 0 0 :::1002
junk 0 0 :::1009
我只想要100X
号码的最后一位数字,我想把它放在一个字符串中,并用这些字符串填充一个数组。
我有以下代码
my @lines = split /^/, $input;
foreach my $line (@lines)
{
my ($garb, $long_ports) = (split /\s*:::\s*/, $line);
my ($garb2, $ports) = (split /10/, $long_ports);
if ($ports < 10)
{
my ($garb3, $ports2) = (split /0/, $ports);
#Add 0 since 0 port is split to empty string
if (length($ports2) == 0)
{
$ports2 = "0$ports2";
}
#Create file name format
@locked_ports = ".X$ports2-lock";
}
}
当我print "@locked_ports"
我只得到了价值.X9-lock
,当我想所有4
我如何使它所以@locked_ports
包含了所有4串的? :
.X0-lock
.X1-lock
.X2-lock
.X9-lock
答
运行,当你修改代码如下
my @lines = split /^/, $input;
foreach my $line (@lines)
{
chomp($line);
my ($garb, $long_ports) = (split /\s*:::\s*/, $line);
my ($garb2, $ports) = (split /10/, $long_ports);
if ($ports < 10)
{
my ($garb3, $ports2) = (split /0/, $ports);
#Add 0 since 0 port is split to empty string
if (length($ports2) == 0)
{
$ports2 = "0$ports2";
}
#Create file name format
push @locked_ports, ".X$ports2-lock";
}
}
你必须push
在@locked_ports
末和chomp
的$线锁摆脱换行符
答
一个快速的地方就是改变这种:
@locked_ports = ".X$ports2-lock";
到:
push @locked_ports,"X${ports2}-lock";
还要确保您使用use strict'
和use warnings;
和发布片断,你声明@locked_ports
并打印。
答
你只需要的使用push
将每个所需结果添加到数组的末尾。下面是一个示例代码片段:
foreach my $line (@lines) {
chomp $line;
if ($line =~ /(\d)$/) {
push @ports, ".X$1-lock";
}
}