http://www.perlmonks.org?node_id=1030904


in reply to how to fetch 1,2,3, from chapter

Alternately,
#!/usr/bin/perl use 5.016; # 1030798ALT my $str = "chapter 1,2,3"; # out: "chapter 1,chapter 2,chapter 3" my ($chapter, @num); if ( $str =~ /^(chapter) / ) { $chapter = $1; # say "\$chapter: |$chapter|"; } my @chapnums = ( $str =~ /(\d[,]*)/gc); if ( @chapnums) { push @num,@chapnums; } for my $num(@num) { # say "DEBUG \$#num: $#num"; # if ( $1 != (1 + $#num) ) { # print "\$chapter $num" . ","; # } elsif ( $1 == (1 + $#num) ){ print "$chapter $num"; }

output: chapter 1,chapter 2,chapter 3

Less plodding, perhaps less mad, but still a longform version of suggestions above.

virudinesh: your title and narrative don't agree about whether you want a comma after "chapter 3" -- an internal contradition that suggests carelessness on your part, and makes it difficult for the Monks to offer a definitive answer. It's not that doing it either way is hard; it's that it's hard to know what you want, and thus, what help you need.


If you didn't program your executable by toggling in binary, it wasn't really programming!