in reply to "Unescaped left brace in regex is deprecated"

Without grep which I was using foolishly...

my $n = scalar @f; for (0..$n){ if ($wf[$_] and $wf[$_] ne $f[$_]){ print "$wf[$_]"; } }

I'm sure there's a much better way, but I digress.

Replies are listed 'Best First'.
Re^2: "Unescaped left brace in regex is deprecated"
by AnomalousMonk (Archbishop) on Jul 18, 2015 at 02:38 UTC

    For when, with the dawn of a new day, your mind is more clear:

    my $n = scalar @f;

    scalar @f gives the number of elements of the array, which is probably not what you want if you're iterating over the elements of the array:

    c:\@Work\Perl>perl -wMstrict -le "my @f = (9, 8, 7); my $n = scalar @f; for (0 .. $n) { print qq{index $_: element $f[$_]}; } " index 0: element 9 index 1: element 8 index 2: element 7 Use of uninitialized value in concatenation (.) or string at -e line 1 +. index 3: element

    Better to use  $#f which yields the highest index of the array. Then,
        my $n = $#f;
    would give you something sensible, and you don't even really need the intermediate  $n variable:

    c:\@Work\Perl>perl -wMstrict -le "my @f = (9, 8, 7); for (0 .. $#f) { print qq{index $_: element $f[$_]}; } " index 0: element 9 index 1: element 8 index 2: element 7


    Give a man a fish:  <%-(-(-(-<