Thomas Munro <thomas.mu...@gmail.com> writes: > I think I have that working OK. Any Perl hackers want to comment on > my use of IO::File (copied from examples on the internet that showed > how to use O_DIRECT)? I am not much of a perl hacker but according to > my package manager, IO/File.pm came with perl itself.
Indeed, and it has been since perl 5.003_07, released in 1996. And Fcntl has known about O_DIRECT since perl 5.6.0, released in 2000, so we can safely use both. > And the Fcntl eval trick that I copied from File::stat, and the > perl-critic suppression that requires? […] > + no strict 'refs'; ## no critic (ProhibitNoStrict) > + my $val = eval { &{'Fcntl::O_DIRECT'} }; > + if (defined $val) This trick is only needed in File::stat because it's constructing the symbol name dynamically. And because Fcntl by default exports all the O_* and F_* constants it knows about, we can simply do: if (defined &O_DIRECT) > + { > + use Fcntl qw(O_DIRECT); The `use Fcntl;` above will already have imported this, so this is redundant. - ilmari