Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: How to increment a MAC Address?

by dorward (Curate)
on May 23, 2005 at 09:19 UTC ( [id://459476] : note . print w/replies, xml ) Need Help??


in reply to How to increment a MAC Address?

Something like this perhaps?

$" = ':'; for (my $int = 1; $int <= 999999999999; $int++) { my $leading = sprintf("%012d", $int); my @split = ($leading =~ /../g); print "@split\n"; }

Replies are listed 'Best First'.
Re^2: How to increment a MAC Address?
by rob_au (Abbot) on May 23, 2005 at 09:33 UTC
    The components of a MAC address, when expressed as a group of six octet values, are expressed as hexadecimal values (eg. FE:DC:BA:01:23:45) - Your code does not account for this with the maximal octet value of 99 (decimal) provided by your code.

    Although in stating this, I should note that this is a problem too with the problem description in the original thread post.

     

    perl -le "print unpack'N', pack'B32', '00000000000000000000001000000000'"

      yes, i know 99 is not valid, just that im simulating something out here, where i require the value as 99 and not in hex.
        if $_ holds your string, then this should increment it
        $_ = join ":",unpack "A2"x6, substr( ('0' x 12 . (1 + join '',split /:/,$_))), -12)
Re^2: How to increment a MAC Address?
by aditya.singh (Acolyte) on Jun 16, 2005 at 12:24 UTC
    You code prints:
    00:00:00:00:00:99
    00:00:00:00:01:00
    00:00:00:00:01:01


    OP wants:
    00:00:00:00:00:99
    00:00:00:00:01:99
    00:00:00:00:02:99 and so on.

    Note: Once the pair of digit reaches 99, it does not roll back to 00.

      I've just tested it and it increments as expected (i.e. it does get past 1).