kprasanna_79 has asked for the wisdom of the Perl Monks concerning the following question:

Revered Monks,
Today perl behaves differently to me. Below is my stupid question
my @found_files = grep (/$_jobcard_basename/,@temp); The @temp comtains /iri/irs-dev2/dairyassoc/job.trigger/RUNNING.sub-D625448-1.pdi_chs.xm +l /iri/irs-dev2/dairyassoc/job.trigger/RUNNING.sub-D625449-1.topline.chs +.7821.1224800521.xml The $_jobcard_basename contains pdi_chs
But the grep returns no output and so the @found_files contain nothing. Am i missing something here.
-Prasanna.K

Replies are listed 'Best First'.
Re: A question in grep
by ikegami (Patriarch) on Oct 24, 2008 at 03:49 UTC

    You're mistaken about the content of the variables. What's the output of the following:

    { use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@temp; print Dumper $_jobcard_basename; print Dumper \@found_files; }

    Maybe your input hasn't been chomped? It behaves as you think it should:

    use strict; use warnings; my @temp = '/iri/irs-dev2/dairyassoc/job.trigger/RUNNING.sub-D625448-1 +.pdi_chs.xml'; my $_jobcard_basename = 'pdi_chs'; my @found_files = grep (/$_jobcard_basename/,@temp); print("Found ", scalar(@found_files), " file(s):\n"); print("$_\n") for @found_files;
    Found 1 file(s): /iri/irs-dev2/dairyassoc/job.trigger/RUNNING.sub-D625448-1.pdi_chs.xml

    By the way /$_jobcard_basename/ should be /\Q$_jobcard_basename\E/ if $_jobcard_basename contains a string rather than a regexp pattern. It happens to not matter for the particular value it has at the moment.

    A reply falls below the community's threshold of quality. You may see it by logging in.
Re: A question in grep
by ccn (Vicar) on Oct 24, 2008 at 03:54 UTC
    Looks like you don't use strict and misspel some variable names