in reply to How to Pass more than one file in perl MY function

But I would like to pass all the below files only; j*.1.txt j*.3.txt j*.a.txt etc..

These examples all have only 1 character between the dots. If you just want that then you can amend the glob to look for that:

my @files = <data/j*.?.txt>;

OTOH, if you want to pass arbitrary globbing patterns you could do that in @ARGV but you'll need to quote them on invocation.

#!/usr/bin/env perl use strict; use warnings; my @files = <data/j*.*.txt>; if (@ARGV) { @files = map { <data/$_> } @ARGV; } print "Using @files";
$ ./gt.pl Found data/j.a.txt data/j.foo.txt data/j.xyz.txt $ ./gt.pl 'j*.?.txt' Using j*.?.txt instead Found data/j.a.txt

See map for more on its usage.


🦛

Replies are listed 'Best First'.
Re^2: How to Pass more than one file in perl MY function
by prad001 (Initiate) on Sep 29, 2022 at 19:33 UTC
    What if the file names are different.. something like /data/j*.1.txt /data/j*.txt /data/q*.1.txt etc..!! Please let me know.. Thank you in advance..

      Well then you would pass them as separate args:

      $ ./gt.pl 'j*.1.txt' 'j*.txt' 'q*.1.txt'

      Obviously the first argument here is redundant as it is a subset of the second.


      🦛

        Is there any way I can pass the all the files in the program and NOT on the command line??? Firstly the list is of the files is huge and I am reading those files to extract the data from those files in the same program..