http://www.perlmonks.org?node_id=632290


in reply to Re: Practical example of "Is Perl code maintainable" (golf)
in thread Practical example of "Is Perl code maintainable"

It would have been better for File::stat to avoid overriding the name stat()

But easily avoided, since symbol pollution is optional.

use File::stat (); my $st = File::stat::stat( 'some_file' );

-xdg

Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

Replies are listed 'Best First'.
Re^3: Practical example of "Is Perl code maintainable" (File::stat)
by tye (Sage) on Aug 14, 2007 at 02:39 UTC

    It is even easier to avoid it by not using the module at all. The amount of code required to replace the module is small enough that it is hardly worth using the module unless it provides a marked interface improvement, which it comes close to doing. Perhaps before Perl 5.8 it fully succeeded.

    And I think it would only require (any number of) minimal changes to the module for it to be generally useful to me. As is, it just misses the mark except in limited situations. Offering to export stat()/lstat() with non-conflicting names [Stat()/LStat()] and populate() with a better name1 would certainly suffice.

    1 StatHash(stat _) ? Except File::stat doesn't produce a hash. It produces a Class::Struct object. So $st= StatObj( -d ? stat _ : lstat ) for $fileName;.

    - tye