Why am I able to cat a directory?
Stanislav Syekirin
stanislav.syekirin at studium.fernuni-hagen.de
Sun Jan 22 18:52:12 PST 2023
Thank you for the example, but, to be honest, I'm even more confused
now. I'm not sure what the array part does: $arrFiles[] is not valid
syntax, and array() looks like a subroutine call but there is no such
subroutine. It also seems to me after some testing that
- opendir with one argument does not exist and it should have been
opendir($handle, $shifts_directory)
- $entry == "." compares strings as numbers and it should have been
$entry ne "."
- !== FALSE is not a thing and it should have been while ($entry =
readdir($handle))
I've tried the following adjusted code, and it works on Dragonfly...
my $directory = $ARGV[0];
opendir(my $handle, $directory) or die "can't open $directory";
while (my $entry = readdir $handle) {
if ($entry ne "." && $entry ne "..") {
print "$entry\n";
}
}
closedir $handle;
...but it works just as well on Linux, where cat on directories
doesn't work, so it can't rely on that.
Can you please elaborate?
Regards
Stanislav
On So, 22 Jan 2023 22:44:27 +0000
Marc Fournier <scrappy at hub.org> wrote:
>
> Simplistically, a directory is just a file with binary data in it
>... you can manipulate it in the same way as any other file ... I
>tend to write perl scripts that open a directory, read the contents (
>files ) and then manipulate the files within it:
>
> --
> $handle = opendir( $shifts_directory );
>
> if ($handle) {
> $arrFiles = array();
> while (($entry = readdir($handle)) !== FALSE) {
> if ($entry != "." && $entry != "..") {
> $arrFiles[] = $entry;
> }
> }
> } else {
> exit ( 'directory does not exist: ' . $shifts_directory );
> }
>
> closedir($handle);
> --
>
> Using cat isn't very effective, but as effective as using cat to
>view an image file, or excel spreadsheet ...
>
>
> On 2023-01-22 10:37, Stanislav Syekirin wrote:
>> Hi all,
>>
>> I accidentally noticed that the following runs without error (even
>>though it only outputs some binary data I can't understand) on my
>>Dragonfly 6.2 install:
>>
>> mkdir a
>> cat a
>>
>> The same happens on NetBSD, so it probably isn't a bug, but I really
>>can't imagine the intended use case. Can someone please explain?
>>
>> Regards
>> Stanislav
More information about the Users
mailing list