2010-11-22 3 views
1

일부 데이터의 출력 파일을 구문 분석하려고하는데이 값을 Windows 쉘로 반환하는 데 문제가 있습니다.단일 행 Perl 스크립트에서 값 검색

단순한 정규식을 사용하여 값을 반환하고이를 내 셸 변수에 저장하는 것입니다. 하여 Perl.exe의 로컬 복사본에

%VAL% = %PERL% -e '$tmp="Value: 1000"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }' 
내가 $1에서 발견 된 것을 반환 할 위치 %VAL%

%PERL% 포인트 :

나는 현재이 같은 있습니다.

누군가 적절한 방법을 알려주십시오.

답변

2

편집 : 그것은 유닉스보다 약간 못 생겼어의 :

for /f "tokens=*" %i in ('perl -e "$tmp=\"Value: 1000\"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }"') do set VAL = %i 

또는 중간 파일 set /p을 사용

%PERL% -e '$tmp="Value: 1000"; if ($tmp =~ /Value:\s(\d+)/) { print $1; }' > file.txt 
set /p VAL = < file.txt 
del file.txt 

Silly Batch File Tricks

+0

감사합니다! 아주 잘 근무했다. – espais

0

왜 스크립트 안에 변수를 만들지 않습니까? win32 perl 위키에서 env_var을 참조하십시오.

+1

에서 변수가 env_var로 설정되어있는 경우, 그것은 것 스크립트 내에서 시작된 프로그램에서만 볼 수 있지만 스크립트가 끝나면 스크립트 외부로 내보내지지 않습니다. – cristis

+0

잘 모름 (그리고 테스트 할 수는 없지만) "수출"이 그렇게 할 것이라고 생각했습니다. 내 실수! – Aif