Hi All~
How can I grab the first item in every file and include in the first print statement below. The first item will always start w/ a "$" and will not match a key in %DIR_LIST. The other items in the file (.pdf's) may or may not match a key in %DIR_LIST Filename1: O20270.TXT $432 12345.pdf 12121.pdf Filename2: O20271.TXT $433 12345.pdf 12000.pdf #!/usr/bin/perl use strict; use warnings; use File::Basename; # open the directory that contains all the MSDS in .pdf format my $pdf_dir = "/var/www/html/msds"; opendir(DIR, $pdf_dir) or die "Can't open the $pdf_dir: $!\n"; # read file names in that directory into @pdfs my @pdfs = readdir(DIR) or die "Unable to read current dir:$!\n"; closedir(DIR); # open all the .TXT file from the 400 my $orders_dir = "/home/bvolk/msds_in"; opendir (ORDERS, $orders_dir) or die "Can't open $orders_dir: $!"; # read all the item numbers in all the .txt files w/ map and # load @ARGV for <> operator @ARGV = map { "$orders_dir/$_" } grep { !/^\./ } readdir ORDERS; my %DIR_LIST; $DIR_LIST{$_} = 1 for @pdfs; while (<>) { chomp; $_ =~ s/\s+\z//; # I tried to shift off the first item here w/ $my truck = shift; but I was shifting off the first file.. # plus it will be out of scope when I try to print. if(exists($DIR_LIST{$_})){ # the first item in each file will not exist but I want to grab it and # assign it to my $truck. my $basename = fileparse($ARGV,'.TXT'); $basename =~ s/O//; $_ =~ s/.pdf//i; my $indy = 10; print "Job $basename printing msds $_ to $indy on truck # $truck \n"; } else { my $basename = fileparse($ARGV,'.TXT'); $basename =~ s/O//; print "Job $basename missing msds $_\n"; } Thanks for any suggestions! Brian