sub mac2long { my @mac = unpack("A4"x3,shift); my $long = 0; foreach my $octet (@mac) { $long <<= 16; $long |= hex($octet); } $long; } sub long2mac { my $long = shift; my @octets; for (my $i = 2; $i >= 0; $i--) { $octets[$i] = sprintf("%04x",($long & 0xFFFF)); $long >>= 16; } join('.',@octets); } chomp(my $inmac = shift @ARGV); my $long = mac2long($inmac); print "$inmac converted to long: $long\n"; my $outmac = long2mac($long); print "$long converted to mac: $outmac\n"; #### 001095123456 converted to long: 2500998230 2500998230 converted to mac: 0000.9512.3456