in reply to Re: Grep file out of directory and read into array
in thread Grep file out of directory and read into array

Hi pme

So I have tried your suggestion and I am now getting this error

Can't use string ("find . -name *.dpt | xargs grep "...) as a symbol ref while "strict refs" in use at ./perlref.pl line 14, <> line 1.

Here is my code as it stands can you see anything the pops out at you

#!/usr/bin/perl use strict; my $REG; my @REGARRAY; my $INI_DIR='/shares/MILKLINK/PPdir'; print "Enter Reg Number: "; chomp ($REG = <>); my $FILE = ('find %s *.dpt | xargs grep -l %s',$INI_DIR,$REG); open $FILE, '<', my $DPT; chomp(@REGARRAY, $FILE); close $FILE; foreach my $ITEM (@REGARRAY) { system("/shares/optiload/prog/indref.sh $ITEM"); }
The file it should pick up is test.dpt
PX12RUJ PX12RUR PX12RUV #PX12RUU PX12WLJ #PX12WLL PX12WLK PX12RUW WN14YGV WN14YGY

Replies are listed 'Best First'.
Re^3: Grep file out of directory and read into array
by pme (Monsignor) on Dec 08, 2014 at 15:37 UTC
    Hi Jim,

    Try this:

    #!/usr/bin/perl use strict; use Data::Dumper; my $INI_DIR='/shares/MILKLINK/PPdir'; my $REG; print "Enter Reg Number: "; chomp ($REG = <>); my @FILE = `find $INI_DIR -name *.dpt | xargs grep -l $REG`; print Dumper(\@FILE) . "\n";
    Those quotes around 'find' are backquotes.

    It is unclear to me what you want to do with the grepped lines.

      Still didn't work same error...

      simplest way of explaining it is the .dpt files contain a list of reference numbers which I want to read into an array and throw each individual ref number at the script ./indref.sh

      But there are a few of these .dpt files, so I am trying to write a perl script that will look for a matching ref number out of all of the .dpt files which are all held in different directories.

      Once the script has found a .dpt file with that ref number it reads the whole file into an array(as each line in the file only contacts the ref num) then passes each element (line) in the array(file) as command line arguements to the ./indref.sh script.

      I hope this helps you get an idea of whats going on