2013-07-03 3 views
3

사용자로부터 ip를 수집하고 불필요한 공백을 해킹하고 해킹하는 것을 시도했지만, 정규 표현식으로 간주하는 것으로 몇 가지 문제가 있습니다. .IP 주소의 Regex가 일치하지 않습니다.

my $serverIP; 

print "Enter vSphere server's IP\n"; 
while(<>){ 
    $serverIP = $_; 
    print "DEBUG <$serverIP>\n"; 
    if (/$serverIP = (\d+\.\d+\.\d+\.\d+)/){ 
    print "Match found $1\n"; 
    $serverIP = $1; 
    last; 
    } 
    else{ 
    print "Not an IP\n"; 
    print "Please enter a valid IP\n"; 
    } 
} 
print "I found $serverIP!\n"; 

나는 정규식은 간단 알고 있지만 나는 그것이

+1

'엄격한 사용 ; 항상 경고를 사용하라. – tripleee

답변

10

변경해야 가정으로는 1.1.1.1과 일치하지 않습니다

if (/$serverIP = (\d+\.\d+\.\d+\.\d+)/){ 

에 :

if ($serverIP =~ /(\d+\.\d+\.\d+\.\d+)/){ 
+0

글쎄, 지금 바보 같아서 고마워. =) – dakillakan

+1

당신은 천만에요. 우리 모두는 수시로 두 번째 눈 쌍이 필요합니다. – toolic

+1

그렇다면 a1.2.3.4.5b는 가능하지만,'/^\ d +. \ d + \. \ d + \ d + $ /'를 대신 사용해보십시오. (공백을 제거한 후 이상적입니다.) – tripleee

관련 문제