0

関数「start_ip_address」、「ip_address_increment」、および「number_of_increment」への引数があるとしましょう。

start_ip_address を出力してから、そのアドレスをインクリメント number_of_increment 回だけインクリメントしたいと思います。

"start_ip_address" = 192.168.0.0 および "ip_address_increment" = 0.0.1.1 および "number_of_increment" = 3 の場合、次のように出力します。

192.168.0.0

192.168.1.1

192.168.2.2

192.168.3.3

これどうやってするの?私は Perl の文字列操作がかなり苦手です。

4

1 に答える 1

3

IPv4 アドレスは 32 ビットの整数です。各数値はバイトを表します。

sub to_num { unpack 'N', pack 'C4', split /\./, $_[0] }
sub fr_num { join '.', unpack 'C4', pack 'N', $_[0] }

my $ip = to_num($start_ip_address);
my $inc = to_num($ip_address_increment);

say fr_num($ip);
for (1..$number_of_increments) {
   $ip += $inc;
   say fr_num($ip);
}
于 2013-08-26T02:01:31.340 に答える