$ +없이 괄호에서 일치하는 부분을 대체하고 반환 할 수 있습니까?

르네 니페 네거

다음 코드 본질적으로 내가 원하는 작업을 수행합니다. 변수의 일부를 대체하고 대체 된 값의 일부를 다음에 할당합니다 $foo.

my $value = "The foo is 42, but the bar is 12!";

my $foo = $+ if $value =~ s/foo is (\d+)//;

print "foo: $foo\n" if $foo;
print $value, "\n";

제 질문은 이것이 "올바른 방법"인지입니다. 특히, 나는 $foo = $+ if ... s/.../.../구조에 별로 만족스럽지 않고 이것을 할 수 있는 (내가 느끼는) 더 우아한 방법이 있는지 궁금했다.

보로딘

당신이 어떤 종류의 것을 얻고 있는지 알기는 어렵지만, 그렇게 작성 하지 않는 몇 가지 이유 가 있습니다.

다음과 같이 작성 해서는 안됩니다.

my $foo = $+ if $value =~ s/foo is (\d+)//

결과가 공식적으로 정의되지 않았기 때문입니다. perldoc perlsyn이 말이있다

: (A)의 동작이 my, state또는 our문 개질제 조건부 또는 루프 구조로 변형 (예를 들어, my $x if ...) 정의되지 않는다. my변수 의 값은, undef이전에 할당 된 값 또는 다른 모든 것일 수 있습니다. 그것에 의존하지 마십시오.

또한 캡처 변수를 사용하는 $1것이 더 명확하고 많은 사람들이 무엇을하는지 모를 수 있기 때문에 사용하는 것이 좋습니다 $+. 그리고 $foo정의 된 경우보다 대체가 성공했는지 테스트하는 것이 더 설명 적 입니다.

나는 이렇게 쓸 것이다

my $value = "The foo is 42, but the bar is 12!";

if ( $value =~ s/foo is (\d+)// ) {
  my $foo = $1;
  print "foo: $foo\n";
}

print $value, "\n";

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내부적으로 파이썬 스크립트를 호출하는 배치 파일을 작성하고 파이썬 스크립트가 배치 파일에 일부 값을 반환하기를 원합니다. 어떻게 할 수 있습니까?

분류에서Dev

Javascript에서 값이 대괄호 인 JSON 입력 부분을 어떻게 제거 할 수 있습니까?

분류에서Dev

반환 만 할 수 있고 할당 할 수는 없습니까?

분류에서Dev

클래스 개체 속성은 속성이 C ++에서 가져야하는 값을 반환하는 메서드를 호출 할 수 있습니까?

분류에서Dev

파이썬에서 함수의 값을 어떻게 인쇄하고 반환 할 수 있습니까?

분류에서Dev

특정 일이 발생하는 경우에만 값을 반환 할 수 있습니까?

분류에서Dev

이름을 확인하여 Linq에서 POCO 개체의 속성을 반환 할 수 있습니까?

분류에서Dev

인쇄 된 함수의 값을 반환하지 않고 for 루프없이 어떻게 반복적으로 호출 할 수 있습니까?

분류에서Dev

IAsyncEnumerable을 반환하는 메서드에서 IAsyncEnumerable을 반환 할 수없는 이유는 무엇입니까?

분류에서Dev

MinGW는 노력없이 대부분의 유닉스 시스템 호출을 복제 할 수 있습니까?

분류에서Dev

변수를 할당하지 않고 else / if 문에 대한 답변을 반환 할 수 있습니까?

분류에서Dev

이 파이썬 프로그램을 무한 반복하고 부동 소수점 시간을 시간과 분으로 어떻게 변환 할 수 있습니까?

분류에서Dev

Windows 자체에서 만든 zip 파일 (외부 도구없이)을 암호로 보호 할 수 있습니까?

분류에서Dev

Excel에서 수식이 #NA를 반환하는 경우 "기본값"을 제공 할 수 있습니까?

분류에서Dev

ac # 메서드에서 반환 된 값을 변수에 할당하는 방법이 있습니까?

분류에서Dev

반복되는 부분을 하이픈으로 대체하는 숫자 목록을 어떻게 쉽게 확장 할 수 있습니까?

분류에서Dev

함수가 루프 내에서 동일한 값을 반환하고 루프 외부에서 다른 값을 반환 할 수 있습니까?

분류에서Dev

반응에서 소품 값을 전달하는 중괄호 내에서 표현식을 수행 할 수 있습니까?

분류에서Dev

괄호없이 객체 함수를 호출 할 때 전체 함수를 반환하는 대신 사용자 지정 메시지를 어떻게 표시 할 수 있습니까?

분류에서Dev

이것이 신호 처리기에서 값을 반환하는 신뢰할 수있는 방법입니까?

분류에서Dev

Emacs에서 닫는 괄호를 지우거나 다시 입력하지 않고 일치하는 열린 괄호를 표시 할 수 있습니까?

분류에서Dev

nullglob이있는 대괄호를 포함하여 bash 변수 내에서 명령을 실행할 수 없습니다.

분류에서Dev

ls 명령에서 반환 된 일부 파일 이름을 어떻게 반복 할 수 있습니까?

분류에서Dev

파일에 쓸 아파치 권한을 부여 할 수 없습니다. 뭘 잘못하고 있습니까?

분류에서Dev

lodash가 부분 유형 대신 특정 유형을 반환하지 않도록 할 수 있습니까?

분류에서Dev

이것이 21을 반환하는 이유를 설명 할 수 있습니까?

분류에서Dev

항상 존재하는 파일이 있고 '일반'사용자는 그것을 lstat 할 수 없습니까?

분류에서Dev

항목 배열에 하나의 항목이 있는지 찾을 수없고 Perl에서 필요한 메시지를 반환 할 수 없습니다.

분류에서Dev

Pandas DataFrame이 Tuple을 반환하지만 개별 번호에 액세스 할 수 없습니까?

Related 관련 기사

  1. 1

    내부적으로 파이썬 스크립트를 호출하는 배치 파일을 작성하고 파이썬 스크립트가 배치 파일에 일부 값을 반환하기를 원합니다. 어떻게 할 수 있습니까?

  2. 2

    Javascript에서 값이 대괄호 인 JSON 입력 부분을 어떻게 제거 할 수 있습니까?

  3. 3

    반환 만 할 수 있고 할당 할 수는 없습니까?

  4. 4

    클래스 개체 속성은 속성이 C ++에서 가져야하는 값을 반환하는 메서드를 호출 할 수 있습니까?

  5. 5

    파이썬에서 함수의 값을 어떻게 인쇄하고 반환 할 수 있습니까?

  6. 6

    특정 일이 발생하는 경우에만 값을 반환 할 수 있습니까?

  7. 7

    이름을 확인하여 Linq에서 POCO 개체의 속성을 반환 할 수 있습니까?

  8. 8

    인쇄 된 함수의 값을 반환하지 않고 for 루프없이 어떻게 반복적으로 호출 할 수 있습니까?

  9. 9

    IAsyncEnumerable을 반환하는 메서드에서 IAsyncEnumerable을 반환 할 수없는 이유는 무엇입니까?

  10. 10

    MinGW는 노력없이 대부분의 유닉스 시스템 호출을 복제 할 수 있습니까?

  11. 11

    변수를 할당하지 않고 else / if 문에 대한 답변을 반환 할 수 있습니까?

  12. 12

    이 파이썬 프로그램을 무한 반복하고 부동 소수점 시간을 시간과 분으로 어떻게 변환 할 수 있습니까?

  13. 13

    Windows 자체에서 만든 zip 파일 (외부 도구없이)을 암호로 보호 할 수 있습니까?

  14. 14

    Excel에서 수식이 #NA를 반환하는 경우 "기본값"을 제공 할 수 있습니까?

  15. 15

    ac # 메서드에서 반환 된 값을 변수에 할당하는 방법이 있습니까?

  16. 16

    반복되는 부분을 하이픈으로 대체하는 숫자 목록을 어떻게 쉽게 확장 할 수 있습니까?

  17. 17

    함수가 루프 내에서 동일한 값을 반환하고 루프 외부에서 다른 값을 반환 할 수 있습니까?

  18. 18

    반응에서 소품 값을 전달하는 중괄호 내에서 표현식을 수행 할 수 있습니까?

  19. 19

    괄호없이 객체 함수를 호출 할 때 전체 함수를 반환하는 대신 사용자 지정 메시지를 어떻게 표시 할 수 있습니까?

  20. 20

    이것이 신호 처리기에서 값을 반환하는 신뢰할 수있는 방법입니까?

  21. 21

    Emacs에서 닫는 괄호를 지우거나 다시 입력하지 않고 일치하는 열린 괄호를 표시 할 수 있습니까?

  22. 22

    nullglob이있는 대괄호를 포함하여 bash 변수 내에서 명령을 실행할 수 없습니다.

  23. 23

    ls 명령에서 반환 된 일부 파일 이름을 어떻게 반복 할 수 있습니까?

  24. 24

    파일에 쓸 아파치 권한을 부여 할 수 없습니다. 뭘 잘못하고 있습니까?

  25. 25

    lodash가 부분 유형 대신 특정 유형을 반환하지 않도록 할 수 있습니까?

  26. 26

    이것이 21을 반환하는 이유를 설명 할 수 있습니까?

  27. 27

    항상 존재하는 파일이 있고 '일반'사용자는 그것을 lstat 할 수 없습니까?

  28. 28

    항목 배열에 하나의 항목이 있는지 찾을 수없고 Perl에서 필요한 메시지를 반환 할 수 없습니다.

  29. 29

    Pandas DataFrame이 Tuple을 반환하지만 개별 번호에 액세스 할 수 없습니까?

뜨겁다태그

보관