Perl에서 문자열 연결?

Perl에서 문자열 연결?

이 질문이 너무 기본적이라면 죄송합니다. 하지만 저는 Perl을 처음 접합니다. 이제 다음 두 줄의 코드를 한 줄에 작성하고 싶습니다.

perl -e 'print crypt("my_password","\$6\$my_salt\$")'

perl -pe 's|(root):(\$.*?:)|\1:my_encrypted_password:|' /etc/shadow

my_encrypted_password기본적으로 첫 번째 줄을 인쇄된 내용으로 바꾸고 싶습니다 . 그런데 어떻게 쓰는게 맞는지 모르겠네요? 어떤 도움이라도 대단히 감사하겠습니다.

답변1

의미하는 바는 다음과 같습니다.

perl -pe 's|(?<=root:)[^:]*|crypt("my_password","\$6\$my_salt\$")|e' /etc/shadow

에서 perldoc perlre:

    Substitution-specific modifiers described in

    "s/PATTERN/REPLACEMENT/msixpodualngcer" in perlop are:

      e  - evaluate the right-hand side as an expression

오른쪽에서는 $&일치하는 부분과 $1첫 번째 캡처된 부분 등을 참조하는 데 사용할 수 있습니다.

관련 정보