cmv has asked for the wisdom of the Perl Monks concerning the following question:
I have the need to collapse a nice, easy-to-read-and-maintain perl script into a butt-ugly-but-short one-liner.
Below is what I've evolved from/to. Can TRY02 be made to evolve any further (make it any shorter)?
Thanks
Craig
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $host = 'www.google.com'; #### TRY00: Multi-lines... my @a = gethostbyname($host); print "ARRAY: ", Dumper(\@a), "\n"; print "ADDRS:\n", Dumper(unpack('C4', $a[4])), "\n"; #### TRY01: One-liner... print "ONE:\n", Dumper(unpack('C4', (gethostbyname($host))[4])), "\n"; #### TRY02: One-liner in dotted notation form... print "TWO:\n",join('.',unpack('C4', (gethostbyname($host))[4])),"\n";
UPDATE: Thanks to kyle++ and ikegami++ I've learned some new things. Here is the end result that I'm using:
Although I'm impressed with the "". substitution for scalar() (which is called golfing?), I decided to sacrifice the extra characters for understandability (the cost-benefit seems worth it now that the one-liner is this small). Not so butt-ugly now! Many thanks!perl -MSocket -e 'print inet_ntoa(scalar(gethostbyname("hostname")))'
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: gethostbyname one-liner: Improvements?
by kyle (Abbot) on Jan 20, 2009 at 22:09 UTC | |
|
Re: gethostbyname one-liner: Improvements?
by ikegami (Patriarch) on Jan 20, 2009 at 22:26 UTC | |
|
Re: gethostbyname one-liner: Improvements?
by jwkrahn (Abbot) on Jan 20, 2009 at 23:33 UTC | |
|
Re: gethostbyname one-liner: Improvements?
by cmv (Chaplain) on Jan 21, 2009 at 15:22 UTC | |
by ikegami (Patriarch) on Jan 21, 2009 at 16:07 UTC | |
by kyle (Abbot) on Jan 21, 2009 at 15:43 UTC |