Bret Goodfellow wrote: > The File::Find::name didn't seem to make any difference. I still have > to be in the directory that I want to search. Hmmm. > > -----Original Message----- > From: Wagner, David --- Senior Programmer Analyst --- WGO > [mailto:[EMAIL PROTECTED] > Sent: Friday, March 11, 2005 3:13 PM > To: Bret Goodfellow; beginners@perl.org > Subject: RE: Why am I getting data from Current Directory? > > > Bret Goodfellow wrote: >> I am writing a script to list out a directory's contents, showing the >> number of days since modified. The problem I am having is that the >> script doesn't list out the "modified time" unless I change to the >> directory being listed. If I change to the directory I want to list, >> then all works okay. Is there a way to fix this script so that I >> don't have to run the script from the current directory? >> >> use strict; >> use warnings; >> use File::find; >> use File::stat; >> >> my $arg_length; >> my $arg_lastchar; >> my $arg_string; >> my $Len; >> >> $arg_length = length($ARGV[0]); >> $arg_lastchar = substr($ARGV[0], $arg_length-1, 1); $arg_string = >> $ARGV[0]; >> >> print "Argument: $arg_string\n"; >> print "length: $arg_length\n"; >> print "last character: $arg_lastchar\n"; >> >> print "Contents of $arg_string\n"; >> opendir DH, $arg_string or die "Couldn't open directory: $arg_string >> $!"; >> >> ###################################################################### >> ## # >> # Read one file at a time into $_ >> # >> > ######################################################################## >> # >> while ($_ = readdir(DH)) { >> next if $_ eq "." or $_ eq ".."; >> next if -d $_ ; >> ##################################### >> # append upto 30 blanks after the file name # >> ##################################### >> print $_, " " x (30-length($_)); >> print " age of file: "; # age of file >> >> $Len = index(-M $_, "."); > Change the $_ to $File::Find::name ( Fully qualified name of > file ) Is in the doc. Wags ;) >> >> print substr(-M $_, 1, $Len-1); >> print "\n";
It should. I ran a simliar script and had something like: printf "%-30s: %5d\n", $File::Find::name, int(-M $File::Find::name); printed out the integer dates. As john K stated, you are working too hard and it can be generated as one line and I would just use printf and it's capabilities to line for you. For printing, you could use $- which has the filename and for testing then the $File::Find::name has the full path and filename. Wags ;) >> } > > > > ******************************************************* > This message contains information that is confidential > and proprietary to FedEx Freight or its affiliates. > It is intended only for the recipient named and for > the express purpose(s) described therein. > Any other use is prohibited. > ******************************************************* -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>