in reply to Re: position of first matching regex
in thread position of first matching regex

Yup! There's one of those obvious things I feared: Duh??? ``@'' is an "array" sigil. Wow. I love learning, and it is usually quit a laugh too. Like this time.

Nice code! I'm still used to c, just learning perl, and spontaneous variable declarations seem soooo immoral! Just habit. Also, the next if $str !~ /\w?([0-9])/; type of code is still new to me.

I am assuming that the $- values are keying on the positional declaration within the re. And unlike pos, it does not require m/.../g ?

Changed this to:

if ( $filename =~ /([0-9])/ ) { ($startloc = $-[0]); ($alphaloc = $startloc + 4); } print "$startloc$alphaloc ";

The &&'d failed to set $alphaloc if $startloc was zero. (More hilarity!) A case of trying to be clever, instead of being clever.

Which now works. Perhaps before I die, I'll remember that perl's arrays are scalar references. Perhaps not.

Thank you for your help. This now works, and I can get this done.


David

Replies are listed 'Best First'.
Re^3: position of first matching regex
by GrandFather (Saint) on May 18, 2014 at 10:34 UTC

    Why print if the match fails?

    Note that my code includes strictures (use strict; use warnings;). That will warn you of such unhealthy coding practises. I strongly recommend you use strictures, especially if you are just starting out with Perl.

    The () around your two assignment statements don't add any value and make understanding the intent of your code harder.

    @array is not a scalar reference. It is the array.

    Perl is the programming world's equivalent of English