split's purpose to break down a separated list of items. The first argument of split should normally match the separator, not what you want to extract.
my $parent = 'xxx xxx xxx'; my $count = my @items = split(/ /, $parent); print "$count\n"; # 3
Since you have a count, all you need to check if there are duplicates is check the count.
if ($count < 1) { print "None\n"; } elsif ($count < 2) { print "Unique\n"; } else { print "$count\n"; }
This is a style/performance question.
It sounds from your description that you can have an input like
my $parent = 'xxx yyy xxx zzz';
If so, you should worry about using a *working* solution first.
my $substring = 'xxx'; my $parent = 'xxx yyy xxx zzz'; my @count = split($substring,$parent); my $total = $#count + 1; print "there are $total $substring in $parent\n"; # XXX 3
This stems from your misuse of split.
In this case, I'd use
my $substring = 'xxx'; my $parent = 'xxx yyy xxx zzz'; my $count = () = $parent =~ /\Q$substring/; if ($count < 1) { print "None\n"; } elsif ($count < 2) { print "Unique\n"; } else { print "$count\n"; }
In reply to Re: Counting SubStrings, Style Question
by ikegami
in thread Counting SubStrings, Style Question
by se@n
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |