2013-07-16 2 views
-1

Windows에서 ActiveState perl 5.8을 사용합니다. 나는 sc qc MyServiceName의 결과를 변수에 넣을 것입니다.perl에서 검색 한 문자열 다음에 나머지 줄을 반환하는 방법은 무엇입니까?

[SC] QueryServiceConfig SUCCESS 
SERVICE_NAME: MSSQL$INSTANCE1 
     TYPE    : 10 WIN32_OWN_PROCESS 
     START_TYPE   : 3 DEMAND_START 
     ERROR_CONTROL  : 1 NORMAL 
     BINARY_PATH_NAME : "C:\Program Files\Microsoft SQL Server\MSSQL10_50.INSTANCE1\MSSQL\Binn\sqlservr.exe" -sINSTANCE1 
     LOAD_ORDER_GROUP : 
     TAG    : 0 
     DISPLAY_NAME  : SQL Server (INSTANCE1) 
     DEPENDENCIES  : 
     SERVICE_START_NAME : TESTLAB\svc_SQLServer 

나는 그렙에서 반환하려는 또는 정규식 일치 TESTLAB\svc_SQLServer 되는 문자열 : 내가 STDOUT에 변수를 인쇄 할 경우

$MSSQLResults=`sc qc $MSSQLServiceName`; 
print "MSSQLResults $MSSQLResults"; 

내가 좋아하는 뭔가를 얻을. grep이나 regex 또는 다른 것을 사용해야합니까? 펄의 라인은 내가 원하는 것을 성취 할 수 있을까? 텍스트 TESTLAB\svc_SQLServer은 내가 실행할 컴퓨터에 따라 다릅니다.

+0

-1 그래서 'SERVICE_START_NAME :'다음에 무엇이든 원하는가요? 우리가 짐작하는 대신이 사실을 분명히해야합니다. – m0skit0

+0

모호함 때문에 미안합니다 –

답변

4

정확하게 이해하면 검색 할 스칼라 변수 (예 : $MSSQLResults)가 있습니다. 이 경우 :

if (my ($service_start_name) = $MSSQLResults=~ m/SERVICE_START_NAME\s+:\s+(.*)/m) { 
    # do something 
} 
+0

저는 정규식 검색 결과를 다른 변수에 넣기를 원합니다. 그래서이 경우에는 "다른 변수"는 문자열로 'TESTLAB \ svc_SQLServer'을 가질 것입니다. –

+0

@MooMinTroll 대답은 ​​이미 그 기능을 제공합니다. 서브 루틴에 넣고 이익을 얻으십시오. – m0skit0

+0

+1 @daxim, 편집 해 주셔서 감사합니다. – levengli

관련 문제