in reply to Re^5: Directory listing
in thread Directory listing

edit: found the answer I was looking for -
http://www.perlmonks.org/index.pl?node_id=422895

don't know, what do the &'s do? all the example code I can find uses them, so I thought it was the proper function call...

the @fileStat was actually remnants of a previous attempt at figuring out how to get the date extracted that I had failed to rever to $s when I went back... explained why it was blowing up... I have the use File::stat; at the very top of the code right after the #!/usr/bin/perl... my problem is that with the code as it is right now:

sub farmInput { my($corp, $finalPath) = ($_[0], $_[1]); my $path = "/usr/local/farm/*/*/$finalPath/*$corp*"; my @farms = glob($path); foreach my $farm (@farms) { my $s = stat($farm); printf "%s: Age [%s], size [%d]\n", $farm, ParseDateString("epoch + $s->mtime()"), $s->size(); # printf "%s: Age [%s], size [%d]\n", $farm, $s->mtime(), $s->size( +); } # end of foreach statement } # end farmInput
it doesn't display anything in between the after date, but when I use the other line (the one commented out in this code) it gives me the seconds since epoch...

sooo... when I use this:

printf "%s: Age [%s], size [%d]\n", $farm, ParseDateString("epoch + $s->mtime()"), $s->size();
I get this:
/usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.bctl.e.le +t.dat.Z: Age [], size [2069] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.bills.let +.dat.Z: Age [], size [266666425] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.billvldt. +let.dat.Z: Age [], size [72] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.bmsg.e.le +t.dat.Z: Age [], size [2428] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.brels.let +.dat.Z: Age [], size [8] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.callfile. +call.dat.Z: Age [], size [126369639]
and then when I use this:
printf "%s: Age [%s], size [%d]\n", $farm, $s->mtime(), $s->size() +;
I get this
/usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.bctl.e.le +t.dat.Z: Age [1106013532], size [2069] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.bills.let +.dat.Z: Age [1106018445], size [266666425] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.billvldt. +let.dat.Z: Age [1106018446], size [72] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.bmsg.e.le +t.dat.Z: Age [1106013532], size [2428] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.brels.let +.dat.Z: Age [1106013532], size [8] /usr/local/farm/vrsn/verisignx/input/75192.hosoft.01162005.A.callfile. +call.dat.Z: Age [1106020765], size [126369639]
Again, here is the entire program:
#!/usr/bin/perl use strict; use File::stat; use Date::Manip; # This is a program that is intended to allow FEP operators # a tool that will facilitate in monitoring incoming transmissions # and preprocessor logs. #------------------- Define Subroutines ------------------# # # # Main is a subroutine simply written for flow control sub Main { my $corp = $_[0]; print "Input:\n"; farmInput($corp,'input'); } # end Main # farmInput does a wildcard search of all /usr/local/farm/*/*/input fo +lders # looking for the <STDIN> corp number and printing those files to scre +en. sub farmInput { my($corp, $finalPath) = ($_[0], $_[1]); my $path = "/usr/local/farm/*/*/$finalPath/*$corp*"; my @farms = glob($path); foreach my $farm (@farms) { my $s = stat($farm); printf "%s: Age [%s], size [%d]\n", $farm, ParseDateString("epoch + $s->mtime()"), $s->size(); # printf "%s: Age [%s], size [%d]\n", $farm, $s->mtime(), $s->size( +); } # end of foreach statement } # end farmInput #------------------- End Subroutines ---------------------# print "What corp are you looking for? " ; chomp(my $whatWeWant = <STDIN>); Main($whatWeWant);

Replies are listed 'Best First'.
Re^7: Directory listing
by Tanktalus (Canon) on Jan 18, 2005 at 14:17 UTC

    You should try taking that string you're passing to ParseDateString ... and just printing it to see what you're actually passing in. I don't think you're passing in what you think you're passing in. An alternative would be to use:

    ParseDateString("epoch " . $s->mtime())