나는이 코드 조각에 대해 아무런 문제없이이 코드 조각에 머리를 부 렸습니다. 내가해야할 일은 이것의 네트워크 목록의 긴 목록에서 시작하는 IP 주소 목록을 얻는 것입니다 형식 : IP 모듈 내 요구에 완벽한 같다 :루프에서 파일의 변수 사용하기
my $ip = new Net::IP ('192.168.1.0 + 512');
do {
print $ip->ip(), "\n";
} while (++$ip);
네트워크와
및
네트워크 NUMBER_OF_HOSTS
192.168.1.0 512
나는 인터넷에서 코드의 무리를 발견했습니다 HOS T 값을 명시 적으로 선언하면 조각이 완벽하게 작동합니다. 변수를 통해 데이터를 전달하는 while 루프에서 사용할 때 문제가 발생합니다. 다음과 같이 많은 시도 후 나는 목록을 수정 한 :
'192.168.150.0 + 512'
을 그리고이 결과 스크립트입니다 : 내가주는 실행하려고하면
#!/usr/bin/perl
use strict;
use warnings;
use Net::IP;
open(MYFILE, "ips.txt") or die "$0: Can't open input file $input: $!\n";
while (<MYFILE>){
chomp $_;
my $ip = new Net::IP ($_);
do {
print $ip->ip(), "\n";
} while (++$ip);
}
close(MYFILE);
나에게 다음과 같은 오류 :이 print $_,"\n";
와 while 루프 내부의 변수를 인쇄 할 경우
Can't call method "ip" on an undefined value at ./iplist.pl line 14, line 1.
이는 V를 출력 ariable 올바르게, 그래서 내가 어디 잘못된거야? 어떤 도움을 주셔서 감사합니다.
는 갱신 1 : ips.txt
0000000 ' 4 1 . 5 7 . 1 1 6 . 0 + 1
0000020 0 2 4 ' \n ' 4 1 . 5 7 . 1 9 2 .
0000040 0 + 1 6 3 8 4 ' \n ' 4 1 . 6
0000060 6 . 1 9 2 . 0 + 1 6 3 8 4 '
0000100 \n ' 4 1 . 7 4 . 8 0 . 0 + 4
0000120 0 9 6 ' \n ' 4 1 . 7 5 . 4 8 . 0
0000140 + 4 0 9 6 ' \n ' 4 1 . 7 6 .
0000160 2 4 . 0 + 2 0 4 8 ' \n ' 4 1
0000200 . 7 7 . 6 4 . 0 + 2 0 4 8 '
0000220 \n ' 4 1 . 7 8 . 4 0 . 0 + 1
0000240 0 2 4 ' \n
Nits는 제쳐두고 프로그램은 문제가 없습니다. 오류는 입력 파일에 있어야합니다. 'od -c ips.txt'의 결과는 무엇입니까? – ikegami
@ikegami od 출력의 첫 번째 줄을 추가했습니다. – Diego