在perl中连接字符串时出现意外结果

在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

我试图执行下面的脚本,但没有得到想要的输出。它似乎仍在保留旧值并继续连接它

./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 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";