[英]unexpected result while concatenating string in perl
I am trying to execute below script but not getting desired output. 我正在尝试执行以下脚本,但未获得所需的输出。 it seems like it is still preserving old value and keep concatenating it.
似乎它仍然保留着旧的价值并不断地将其串联起来。
./test.pl -v v10,v11,v12 ./test.pl -v v10,v11,v12
Actual Result => 'v10','v11','v10','v12','v10','v11','v10' 实际结果=>'v10','v11','v10','v12','v10','v11','v10'
Expected Result => 'v10','v11','v12' 预期结果=>'v10','v11','v12'
can you please help resolve the issue? 您能帮忙解决这个问题吗?
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
my ($versionFlag,$finalVersionList);
sub validateInputAndFilter
{
my ($passedVersionList) = @_;
$finalVersionList ="";
my @versionList = split(",",$passedVersionList);
foreach my $ver (@versionList)
{
if($ver =~ m/^v[0-9][0-9]$/)
{
$finalVersionList .= "'$ver',$finalVersionList";
}
else
{
print "\nWARNING: Passed version *** $ver *** is NOT in expected format...skipping...\n";
}
}
$finalVersionList =~ s/\,$//;
print "\n\nfinalVersionList => $finalVersionList\n\n";
}
GetOptions('v|version=s' => \$versionFlag) || die "Please pass version list separated by comma";
if(defined $versionFlag)
{
&validateInputAndFilter("$versionFlag");
}
else
{
die "Please pass version list separated by comma";
}
exit 0;
This: 这个:
$finalVersionList .= "'$ver',$finalVersionList";
Should just be : 应该只是:
$finalVersionList .= "'$ver,'";
$foo .= $bar
; $foo .= $bar
; is equivalent to : 等效于:
$foo = $foo . $bar;
So, $finalVersionList .= "'$ver',$finalVerionList";
因此,
$finalVersionList .= "'$ver',$finalVerionList";
is equivalent to : 等效于:
$finalVersionList = $finalVersionList . "'$ver',$finalVersionList";
Change: 更改:
$finalVersionList .= "'$ver',$finalVersionList";
To: 至:
$finalVersionList .= "'$ver',";
You're doing multiple appends here. 您正在这里进行多个追加。 What you had originally is equivalent to:
您最初拥有的等同于:
$finalVersionList = $finalVersionList . "'$ver',$finalVersionList";
Which is not what you want. 这不是您想要的。 If you want
'$ver$',
to be at the fromt of the list, you could do: 如果您希望
'$ver$',
位于列表的首位,则可以执行以下操作:
$finalVersionList = "'$ver'," . $finalVersionList;
or: 要么:
$finalVersionList = "'$ver',$finalVersionList";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.