1

perl で IP アドレスの範囲を繰り返し処理し、その範囲内のすべての IP のリストを出力する必要があります。例のために - のために

192.168.122.1-192.168.122.4

私の戻り値は

192.168.122.1, 192.168.122.2, 192.168.122.3, 192.168.122.4

また、Net::IPまたはNetmaskモジュールを使用できないため、反復する他の方法を見つけます。

次の解決策は機能しますが、理解できない問題がいくつかあります-

1 - 私の開始と終了は perl 変数 "" であり、以下のコードで言及されているものではありません。以下のコードは start="192.168.122.1" では機能しません

2 - 最後に追加されたすべての IP のリストを取得するにはどうすればよいですか?

sub inc_ip { $_[0] = pack "N", 1 + unpack "N", $_[0] }
my $start = 192.168.122.1;
my $end = 192.168.122.4;
for ( $ip = $start; $ip le $end; inc_ip($ip) ) {
    printf "%vd\n", $ip;
}
4

2 に答える 2