加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:23:05 所属栏目:大数据 来源:网络整理
导读:我试图执行下面的脚本,但没有获得所需的输出.它似乎仍然保留旧的价值并保持连接. ./test.pl -v v10,v11,v12 实际结果= ‘V10’,‘V11’,‘V10’,‘V12’,‘V10’ 预期结果= ‘V10’,‘V12’ 你能帮忙解决这个问题吗? #!/usr/bin/perluse strict;use warning
我试图执行下面的脚本,但没有获得所需的输出.它似乎仍然保留旧的价值并保持连接.

./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 "nnfinalVersionList => $finalVersionListnn";
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读