2014-07-16 3 views
0

코드 :는`펄 운영자를 작동하지 않습니다 ...`이클립스

$cmd = "dir"; 

$res = `$cmd`; 

오류 메시지 :

Name "main::res" used only once: possible typo at C:/workspace/test_perl/main.pl line 2. 

버전은 ActivePerl의 5.16.3, 일식 루나입니다.

OS는 Windows 7 32 비트입니다.

무엇이 잘못 되었나요?

몰라요 ... 정말 .... 도와주세요 ...

답변

2

경고가 분명합니다. $res 한 번만 사용하고 있습니다. 데이터를 변수에 넣은 다음 변수를 사용하지 않습니다. 프로그램은 해당 코드 줄없이 동일한 방식으로 작동합니다. 해당 경고를 제거하려면 (오류가 아닌 경고 일뿐입니다) 코드의 어딘가에서 해당 변수를 다시 사용하십시오. 아마도 값이나 그런 것을 인쇄하십시오.

$cmd의 출력을 원하지 않으면 수집하지 마십시오. 아마도 백틱 대신 system()을 사용하십시오. 코멘트에서

, 당신은 추가 : ( $b처럼)

<$a=1;> 또는 <$a = scalar @array;>

잘 수, $a은 특별하다. 정렬 블록에서 사용한다는 사실은 이러한 검사 중 일부가 적용되지 않는다는 것을 의미합니다. 당신은 코드에서 $a 또는 $b을 사용하면 안됩니다 (정렬 블록 제외) - 어쨌든 변수에 대해서는 끔찍한 이름입니다.

+1

흥미롭게도'$ a'는 여러분이 실제로 그것을 정렬 (5.10.1)에서 사용하지 않는다면이 경고를줍니다. – RobEarl

0

이클립스는 변수 res 한 번만 사용하는 것을 보여줍니다. 값을 지정하지만 절대 사용하지 않습니다.

+0

왜 사용해야합니까? <$a=1;> 또는 <$ a = scalar @array;>가 가능합니다 ... 그리고이 코드는 유닉스 서버에서 가능합니다. – user3416447

+1

사용하지 않아도됩니다. 단지 경고 메시지 일뿐 오류 메시지는 아닙니다. 사람들이 가치를 계산하고 사용하지 않을 때, 논리에서 어딘가에서 실수를 범하거나 (또는 ​​변수 이름을 잘못 입력했기 때문일 수 있습니다) 경고합니다. – tobyink

2

아무런 문제가 없습니다. 변수에 값을 할당 한 다음 변수를 사용하지 않기로 결정했습니다. 그것은 단지 경고하고 당신이 그것을 무시하도록 선택할 수 있습니다

$res = `$cmd`; 
if ($red eq 'ABC') { 
    # Unreachable due to typo in condition 
} 

: 펄 그냥 수도 같은 뭔가 잘못을했을 있음을 경고하고

. 실제로, 당신은 아마 그것을 무시하고 어떻게 든 나는 $res을 사용하고 경고를 제거한다고 가정 할 수있는 나머지 코드를 작성해야합니다.

관련 문제