Hi
madtoperl,
A number of suggestions, actually...
- You should use "strict" and "warnings".
- You should use the 3-arg form of open.
- You should check for failure conditions, such as open failing, or @ARGV not being set.
- If you use the module FileHandle, your filehandles don't have to be typeglobs.
- It is redundant to do ($_ =~ /.../); instead just do (/.../).
- If you use regex captures, you don't have to split afterwards.
- You're not using $changeflag; get rid of it.
- Finally, you're writing every line to the file, so why not just do a regex substitution and, if it fails, write the line anyway?
- It's considered good form (though not technically necessary in this case) to close your files when you're done with them.
Here's my rewrite:
#!/usr/bin/perl -w
use strict;
use warnings;
use FileHandle;
(my $argact = shift) or die "Syntax: $0 <fileid>\n";
my $input = new FileHandle;
my $newfile = new FileHandle;
open($input, "<", "one.txt") or die "Failed to read 'one.txt' ($!)\n
+";
open($newfile, ">", "output") or die "Failed to write 'output' ($!)\n
+";
while(<$input>){
s/^Authentication\s+number\s+is\s+(\d+)/Authentication number is $
+argact/;
print $newfile "$_";
}
close $input;
close $newfile;
Isn't that a lot cleaner?
s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.