Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
if ( $#ARGV < 0 ) { print "Usage: $0 [In File][Out File]\n"; exit(1); } my $emtocin = $ARGV[0]; my $emtocout = $ARGV[1] || 'cmpemtocout.txt';
Since you open to style suggestions, the above could be written:
die "Usage: $0 [In File][Out File]\n" if @ARGV <1; my ($emtocin, $emtocout)= @ARGV; $emtocout ||= 'cmpemtocout.txt';
In Perl you can multiple lvalues! In general using a subscript is not a good idea in Perl. @ARGV is more clear than $#ARGV and you will use the @array syntax LOTS! An "off by one error" is one of the if not, the most common error in programming. A big advantage of Perl is that it greatly reduces this chance. Think in term of number of things in the list, not in terms of last index in list.

Perl has a ||= operator that is often overlooked because it doesn't exist in most languages. Here an undef evaluates to "false", so this sets $emtocout to the default value if not already defined, which evidently is what you want.

Also be aware that "die" prints different things depending upon whether you put a "\n" at the end of the string or not. You get executing path and line number if you leave off the "\n". In your opens, would be able to tell which line had the problem.

You can also apply the list slice operator to the list to begin with instead of waiting until the print (why save something you don't need?).

my @fld = ( split(/\|/, $record ) )[0, 3..8]; #and print could look like this: print FDOUT join("\n",@fld),"\n"; #you don't need $outrecord
Not trying to hyper-critical, just helpful. EDIT:
print FDOUT join("\n",@fld),"\n"; #should have course been, print FDOUT join('|',@fld),"\n";

In reply to Re^3: Problem with split using a | separator by Marshall
in thread Problem with split using a | seperator by Grey Fox

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 imbibing at the Monastery: (4)
As of 2024-04-19 02:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found