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

前端之家收集整理的这篇文章主要介绍了在perl中连接字符串时出现意外结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图执行下面的脚本,但没有获得所需的输出.它似乎仍然保留旧的价值并保持连接.

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

猜你在找的Perl相关文章