unexpected result while concatenating string in perl

perl

Solution

This:

$finalVersionList .= "'$ver',$finalVersionList";

Should just be :

$finalVersionList .= "'$ver,'";

`$foo .= $bar`; is equivalent to :

$foo = $foo . $bar;

So, `$finalVersionList .= "'$ver',$finalVerionList";` is equivalent to :

$finalVersionList = $finalVersionList . "'$ver',$finalVersionList";

Problem

I am trying to execute below script but not getting desired output. it seems like it is still preserving old value and keep concatenating it. ./test.pl -v v10,v11,v12 Actual Result => 'v10','v11','v10','v12','v10','v11','v10' Expected Result => 'v10','v11','v12' can you please help resolve the issue? ``` #!/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; ```

Original source