in reply to File modification

I think it's very odd that no one has thought to check that the command-line arg is actually a number. Also, if the idea is to replace the existing "one.txt" file, no one seems to have thought about renaming the output file back to "one.txt".
#!/usr/bin/perl use strict; ( @ARGV == 1 and $ARGV[0] =~ /^\d+$/ ) or die "Usage: $0 N\n where N is a new number for one.txt\n"; open( I, "one.txt" ) or die "$0: reading one.txt: $!"; open( O, "one.txt.new" ) or die "$0: writing one.txt.new: $!"; while(<I>) { s/(Authentication number is) \d+/$1 $ARGV[0]/; print O; } close I; close O; rename "one.txt.new", "one.txt";
Note that the substitution will have no effect on lines that do not match the regex -- it only changes the digit(s) at the end of the targeted line.