in reply to Re: Use of uninitialized value $_ in pattern match (m//)?
in thread Use of uninitialized value $_ in pattern match (m//)?

Hi, thanks for your time! I am trying to match against filenames, from files that are in the path I specify. I modified my script to

$match =~/MV(\d{4})/; $moved = $1; print "$moved \n";

but although I initialise my $match outside of the loops, I still get the same error as described initially :(

Replies are listed 'Best First'.
Re^3: Use of uninitialized value $_ in pattern match (m//)?
by poj (Abbot) on Feb 29, 2016 at 15:46 UTC

    Try

    #!/usr/bin/perl/ use strict; use warnings; my $id = "AC"; my $root = '/home/results/initial/'; for my $i (2..3){ for my $k (1..3){ my $path = $root.sprintf "%s%04d/F%05d",$id,$i,$k; print "$path\n"; for (glob "$path/MV*"){ print "$1\n" if /MV(\d{4})/; } } }
    poj
Re^3: Use of uninitialized value $_ in pattern match (m//)?
by Corion (Patriarch) on Feb 29, 2016 at 15:42 UTC

    What is the value in $match?

    What do you expect the value in $match to be?

    As hippo already mentioned, you seem to be highly confused about how to read entries in a directory. See glob, or opendir and readdir.

Re^3: Use of uninitialized value $_ in pattern match (m//)?
by AnomalousMonk (Archbishop) on Feb 29, 2016 at 16:22 UTC
    ... I still get the same error as described initially ...

    From the OP: '... I'm getting a "Use of uninitialized value $_ in pattern match (m//)" error.'
    If you're really still getting this exact "error" (a warning, actually), then you still have a
        /MV(\d{4})/;
    statement lurking somewhere in your code that is still trying to implicitly match against the  $_ variable which you have still not initialized. What line number is associated with the warning message? Look at (or near) that line for the offending statement.


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