in reply to Counting SubStrings, Style Question
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"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Counting SubStrings, Style Question
by Anonymous Monk on Mar 20, 2010 at 23:24 UTC | |
by ikegami (Patriarch) on Mar 20, 2010 at 23:36 UTC | |
by Anonymous Monk on Mar 21, 2010 at 00:38 UTC | |
by ikegami (Patriarch) on Mar 21, 2010 at 05:09 UTC |