2014-07-24 2 views
1

나는 정규 표현식과 텍스트에서 모든 IP를 구문 분석하려고 :: 일반 :: 인터넷 사용하려고 :오류는 펄 정규 표현식 :: 일반 :: 인터넷 등

use strict; 
use Regexp::Common::net; 
if ($ids{$h} =~ /$RE{net}{IPv4}/) { 
    print $1; 
} 

을하지만이 오류가 점점 계속 :

Global symbol "%RE" requires explicit package name at example.pl 

나는 또한 시도 :

if ($ids{$h} =~ $RE{net}{IPv4}) 

if ($ids{$h} =~ m/$RE{net}{IPv4}/) 

운이없는.

답변

1

use Regexp::Common::net;이 잘못되었습니다. use Regexp::Common 'net';으로 변경 한 후 오류가 발생하지 않았습니다.

편집이 : 해결하려면, 위의 코드 조각은 정규식 할 필요가 :/$ RE {순} {의 IPv4} -/{계속}을

+2

그것은 매우 일반적이다는'사용 정규 표현식을 작성하는 :: 공통 QW를 (그물)'. 이 방법의 장점은 한 줄에 여러 기호를 가져올 수 있다는 것입니다 (예 : 'Regexp :: Common qw (net CC) '를 사용하십시오. –

+0

좋습니다. 나는 전문적인 이유로 펄을 배우고 있는데, qw() 문에 대해 궁금해했다. 그러나 나는 그것들을 배울 필요가 없다. – Bruno9779

+1

'qw'는 문자열의 각 단어에서리스트를 생성하므로 이전 예제 'Regexp :: Common ("net", "CC")를 사용하는 것과 같습니다. [따옴표 및 인용 연산자와 같은] 문서를 체크 아웃하는 것이 좋습니다. (http://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators) –