zejames has asked for the wisdom of the Perl Monks concerning the following question:
But I just feel something more elegant and shorter could be done.# This function takes a number in paramater (eg 24) and # returns the corresponding mask in longer format # (eg 255.255.0.0) sub mask_short_to_long { my $short_mask = shift; my ($bin, $num, @mask); $bin = "1" x $short_mask . "0" x (32 - $short_mask); for my $i (0..31) { $num += substr($bin,31 - $i,1) * (2 ** $i); } for my $i (0..3) { unshift @mask, (($num >> ($i * 8)) & 0xFF); } return join('.',@mask); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Shorter code ?
by jmcnamara (Monsignor) on Mar 11, 2002 at 13:55 UTC | |
by zejames (Hermit) on Mar 11, 2002 at 15:16 UTC | |
|
Re: Shorter code ?
by Kanji (Parson) on Mar 11, 2002 at 14:22 UTC | |
by fuzzyping (Chaplain) on Mar 11, 2002 at 18:35 UTC |