Mathew Snyder schreef:
> Dr.Ruud:
>> my @filenames = sort grep -f, readdir DH;
>
> I tried this line using $dh. Nothing was getting placed in the array.
> Would that be because everything in /usr/bin is an executable file?
Aaargh no, I am making the same mistake as you did: not prepending the
directory name.
I overlooked that readdir() returns the filename, not a handle.
my @filenames = grep -f "$dir/$_", sort readdir DH;
Test:
perl -wle '
$dir = q{/usr/bin};
opendir $dh, $dir or die qq{opendir $dir: $!};
print qq{$_\t}, -f qq{$dir/$_} for (sort readdir $dh)[0..10]
'
>>> my @filenames = grep -f, <$processDir/*> ;
>>>
>>> (but that @filenames uses more memory).
>>
>> It uses more memory because the full pathname is in each element.
>>
> I figured that was why you brought it up earlier so I have it
> prepending the directory name in the foreach loop that runs the stat.
> This way I'm not saving the full path anywhere and only using it long
> enough to stat the file.
Yes. The difference is that the glob-variant (the one looking like
<$dir/*>) contains the full pathnames, and the readdir-variant just the
basenames.
--
Affijn, Ruud
"Gewoon is een tijger."
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>