Cidre2addr: Unterschied zwischen den Versionen
Aus Si:Wiki von Siegrist SystemLösungen - Informatik und Rezepte
Sigi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: «#!/usr/bin/perl my @ret = (); <syntaxhighlight lang="perl"> my $in = <>; chomp($in); if ( $in =~ /^(\d+\.\d+\.\d+\.\d+)\/(\d+)$/ ) { my ($addr, $mask) = ($1,…») |
Sigi (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
+ | <syntaxhighlight lang="perl"> | ||
+ | |||
#!/usr/bin/perl | #!/usr/bin/perl | ||
my @ret = (); | my @ret = (); | ||
− | |||
my $in = <>; | my $in = <>; | ||
chomp($in); | chomp($in); |
Version vom 10. September 2015, 00:22 Uhr
#!/usr/bin/perl my @ret = (); my $in = <>; chomp($in); if ( $in =~ /^(\d+\.\d+\.\d+\.\d+)\/(\d+)$/ ) { my ($addr, $mask) = ($1, $2); my $iaddr = dot2int($addr); for (my $i = 0; $i < 2**(32-$mask); $i++) { print int2dot($iaddr+$i), "\n"; } } else { print "Usage: $0 n.n.n.n/m\n"; } sub dot2int { my @bytes = split(/\./,shift); return undef unless @bytes == 4 && ! grep {!(/\d+$/ && $_<256)} @bytes; return unpack("N",pack("C4",@bytes)); } sub int2dot { return join('.',unpack('C4', pack("N", $_[0]))); }