在perl中连接字符串时出现意外结果
我试图执行下面的脚本,但没有得到想要的输出。它似乎仍在保留旧值并继续连接它 ./test.pl-v10、v11、v12 实际结果=>“v10”、“v11”、“v10”、“v12”、“v10”、“v11”、“v10” 预期结果=>'v10'、'v11'、'v12' 你能帮我解决这个问题吗在perl中连接字符串时出现意外结果,perl,Perl,我试图执行下面的脚本,但没有得到想要的输出。它似乎仍在保留旧值并继续连接它 ./test.pl-v10、v11、v12 实际结果=>“v10”、“v11”、“v10”、“v12”、“v10”、“v11”、“v10” 预期结果=>'v10'、'v11'、'v12' 你能帮我解决这个问题吗 #!/usr/bin/perl use strict; use warnings; use Getopt::Long; my ($versionFlag,$finalVersionList); sub va
#!/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,'";
$foo.=$bar
;相当于:
$foo = $foo . $bar;
$finalVersionList = $finalVersionList . "'$ver',$finalVersionList";
所以,$finalversonlist.=“$ver',$finalVerionList”代码>相当于:
$foo = $foo . $bar;
$finalVersionList = $finalVersionList . "'$ver',$finalVersionList";
更改:
$finalVersionList .= "'$ver',$finalVersionList";
致:
你在这里做多个附件。您最初拥有的相当于:
$finalVersionList = $finalVersionList . "'$ver',$finalVersionList";
这不是你想要的。如果希望“$ver$”,
位于列表的起始位置,可以执行以下操作:
$finalVersionList = "'$ver'," . $finalVersionList;
或:
从他的输入和预期输出来看,我实际上认为他想做$finalVersionList.=“$ver””
如果您可以通过在子变量中使用return$finalVersionList
轻松地保持其词法性,那么您可能应该避免使用$finalVersionList
作为全局变量。
$finalVersionList = "'$ver',$finalVersionList";