Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
This type of data-drive setup can drive a less-skilled maintenance programmer bonkers. I'm moderately skilled at Perl, and it took me several minutes, and most of the fingers on one hand, to puzzle out what you were trying to do.

Let me suggest an alternate approach. First get rid of the opendir calls by delegating to File::Find.

use File::Find; find(\&eachfile, "/data/");
and then structure the callback along the lines of
sub eachfile { my $path = $File::Find::name; return if -d $path; $path =~ s|^.*/(.+)_logs/|| or return; # or log my $item = $1; if ( $path =~ m|(.+)\.(\d+)$| ) { my($company,$quantity) = ($1,$2); inventory($company, $item, $quantity); return; } # and so on for each remaining case # eventually logging any that you can't handle }
That's the rough idea, at least -- it needs some cleanup and error handling.

This would seem to me to be a very easy thing for whoever comes along after you to understand and maintain. The most they would need to understand is File::Find, and that's a low hurdle.

Granted, this leaves you with the equivalent of a string if/elseif*/else, but it seems easy enough to follow.


In reply to Re: The dreaded if-elsif-else construct (code) by dws
in thread The dreaded if-elsif-else construct (code) by deprecated

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (9)
As of 2024-04-19 06:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found