in reply to •Re: Re: Listing Files
in thread Listing Files

Using @ARGV as a global List is a rather interesting idea from the perl-point-of-view, but in my eyes, strat's solution is cleaner. If you really want to list the files first and then search them for Expired, I'd do it with a closure, e.g.
use File::Find; my @htmlFiles = (); find sub { push (@htmlFiles, $File::Find::name) if /\.html\z/; }, qw(/home /var/dir); foreach (@htmlFiles){ ...
@merlyn: btw: thanks for the wonderful Schwartzian Transform and so many good other tricks you showed me :-)

Replies are listed 'Best First'.
•Re: Re: •Re: Re: Listing Files
by merlyn (Sage) on Mar 02, 2002 at 07:46 UTC
    But setting @ARGV is an acceptable way to prepare for a diamond walk. With your solution, you have to either copy @htmlFiles to @ARGV, or do your own open loop, thereby moving further and further from idiomatic Perl.

    Feel free to do what you want in the privacy of your own cubicle, but I'd definitely ding you with a yellow flag in a formal code review for not using @ARGV in some manner in that loop.

    -- Randal L. Schwartz, Perl hacker

      Dear merlyn,

      with your piece of code, I think there is the danger that people might use it without fully understanding what it is doing (see for example the cgi parameter "parser" by Matt's Script Archive, which may work in a certain script, but not in many others). And they will perhaps get into troubles when there is e.g. already something in @ARGV.

      From the perl-point-of-view it's great, but from the learner's-point-of-view it may cause more problems than necessary.

      I hope, this time I happened to explain my point of view in a better way.

      Best regards,

      ls

        And they will perhaps get into troubles when there is e.g. already something in @ARGV.
        Which is why I explicitly cleared @ARGV in my snippet. I'm aware of that.

        It's idiomatic Perl to use diamond on @ARGV. If you don't know that, you haven't even read the Llama yet. I don't expect professional programmers to know less than the Llama before they maintain my code. And writing code that open-codes idiomatic Perl is less maintainable, not more.

        In a code review, you are optimizing for maintainence and reduced defects. @ARGV is the better solution there. If you don't see that, you're optimizing for beginners or something, but not for maintenance and reduced defects. That means you are going to cost your employer more money overall, and increase his risk, making you less hireable. Your choice.

        As I said, feel free to do this in the privacy of your own cubicle, but I will dock that on a code review.

        -- Randal L. Schwartz, Perl hacker

        A reply falls below the community's threshold of quality. You may see it by logging in.