我试图执行下面的脚本,但没有获得所需的输出.它似乎仍然保留旧的价值并保持连接.
./test.pl -v v10,v11,v12
实际结果=> ‘V10’,‘V11’,‘V10’,‘V12’,‘V10’
预期结果=> ‘V10’,‘V12’
你能帮忙解决这个问题吗?
#!/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;
解决方法
这个:
$finalVersionList .= "'$ver',$finalVersionList";
应该只是:
$finalVersionList .= "'$ver,'";
$foo.= $bar;相当于:
$foo = $foo . $bar;
所以,$finalVersionList.=“’$ver’,$finalVerionList”;相当于:
$finalVersionList = $finalVersionList . "'$ver',$finalVersionList";