in reply to Re: Counting SubStrings, Style Question
in thread Counting SubStrings, Style Question

Your conditions are wrong:

{ my $c = my @c = split 'xxx', 'fred bill xx joe'; print $c };; 1 { my $c = my @c = split 'xxx', 'fred bill xxx joe'; print $c };; 2

Replies are listed 'Best First'.
Re^3: Counting SubStrings, Style Question
by ikegami (Patriarch) on Mar 20, 2010 at 23:36 UTC
    My conditions are not wrong.
    for my $count (0..4) { print("$count: "); if ($count < 1) { print "None\n"; } elsif ($count < 2) { print "Unique\n"; } else { print "$count\n"; } }
    0: None 1: Unique 2: 2 3: 3 4: 4
    Or using your examples
    my $substr = 'xxx'; for my $parent ( 'fred bill xx joe', 'fred bill xxx joe', ) { my $count = () = $parent =~ /\Q$substr/; if ($count < 1) { print "None\n"; } elsif ($count < 2) { print "Unique\n"; } else { print "$count\n"; } }
    None Unique

    It's the count is wrong. My entire post is about how split is not the right tool here because it can give the wrong count. That's why my solution doesn't use split.

      I guess I imagined this:

      my $parent = 'xxx xxx xxx'; my $count = my @items = split(/ /, $parent); print "$count\n"; # 3 [download] 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"; }

      And also missed where the OP agreed that his sample code is wrong...Oh! He hasn't.

        What about it? Now read the rest.

        And also missed where the OP agreed that his sample code is wrong...Oh! He hasn't.

        First you say the following is wrong:

        { my $c = my @c = split 'xxx', 'fred bill xx joe'; print $c };; 1 { my $c = my @c = split 'xxx', 'fred bill xxx joe'; print $c };; 2

        Now you're saying the OP's code is right even though it gives the same results for those inputs.

        I don't understand. Could you explain a bit more clearly please?