I was trying to turn a
terribly lame 4 line piece of code into a one liner and have hit a snag. Consider the code:
($name,$aliases,$addrtype,$length,@addrs) = gethostbyname($machine
+);
if($#addrs == -1){ next; }
$ipadrs = join ".", unpack('C4', $addrs[0]);
@iparray = split(/\./,$ipadrs);
I was able to get it down to this:
@addrs = gethostbyname($machine) or next;
@iparray = unpack('C4', $addrs[4]);
As close as I have gotten to a one liner is:
@iparray = unpack ('C4',((gethostbyname($machine))[4]));
In the above line, if the
gethostbyname() function fails because the machine is not available, a warning of uninitialized value is thrown since the array being fed to
unpack was never created. I was't able to get it to work using the
or next; idea. I'm sure there is a way to do it, I just haven't found it. Possibly a code reference or eval though I don't know much about those. Any tip in the right direction will be greatly appreciated.
In reply to One liner?
by ChrisR
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.