in reply to Expanding directories
my @dirs = `ls /var/log/HOSTS/*/*/$year/$month/$day/*`
I'm not sure where you want to go with this, but I assume you want to do something in each directory that exists for the day/month/year for each logged host.
The canonical Perl way of doing this (without relying on an external program) is to use the venerable File::Find module.
Or if you do just want to get the names of the directories that actually exist, you would write something like:use File::Find; find( sub { return unless $File::Find::name =~ m{^/var/log/HOSTS/([^/]+)/([^/]+)/(\d+)/(\d ++)/(\d+)/(.*)$}; my( $dir1, $dir2, $year, $month, $day, $file ) = ( $1, $2, $3, $4, $5, $6 ); # do stuff with $file }, '/var/log/HOSTS' );
$File::Find::name =~ m{^/var/log/HOSTS/([^/]+)/([^/]+)/(\d+)/(\d+)/(\d+)$} and push, @dirs, $File::Find::name;
|
|---|