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")))'
In reply to gethostbyname one-liner: Improvements? by cmv
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |