...
No Format |
---|
$ perltidy file # simple example perltidy script my $input = <STDIN>; if ( open( FILE, "<$input" ) ) { while ( $file = <FILE> ) { # pointless loop! for ( my $i = 0 ; $i < 100 ; $i++ ) { print "."; } print "\n"; push( @entries, $file ); # copy contents of file to memory $count++; # keep a counter } close(FILE); } else { die "Could not open file $file: $!\n"; } |
Useful hints
Checking IP names and IPv4 addresses
Assume we have the name or IPv4 address in $hostname then one can use (nb the address does not exclude octets of >255).
Code Block |
---|
unless(($hostname=~/(([a-z0-9]+|([a-z0-9]+[-]+[a-z0-9]+))[.])+/)#Name
|| ($hostname=~/ \b(?:\d{1,3}\.){3}\d{1,3}\b/)){ #IPv4 addr
print "hostname=$hostname, not a valid IP name or address\n";
exit 101;
}
|
If one wishes to fully check that the octets are correct (<255) and also get the value of each octet (into $s1..4) then one can use:
Code Block |
---|
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
|
If one does not need the values of each octet then a simpler expression will surfice:
Code Block |
---|
NOT-SET
|
An alternative is to use a library module such as NetAddr::IP.
For IPv6 addresses (which are much more complex) use a module such as: Net::IPv6Addr, Regexp::IPv6,or NetAddr::IP (do a Google search with the name).
Rough template
There is a rough template of a perl script that creates/sets several useful variables (user, host, debug level) uses strict and -w, has USAGE information, ensures created files are accessible to others, processes options, has the disclaimer notice, etc. It is not meant to do anything useful but may be useful as a start.