2014-02-22 2 views
8

저는 Perl 초보자입니다. 나는 문자열과 숫자를 연결하고 싶다. 연산자이고 첫 번째 인수는 숫자입니다. 나는 join, sprintf를 사용할 수 있으며 인쇄 번호, 문자열로 간단히 인쇄 할 수 있습니다. 그러나 나는 그것을 시도했다. 운영자가 다음을 얻었다.Perl에서 숫자와 문자열 연결

$foo = "hello".34 # gives hello.34 
$foo = 34."hello" # gives an error 
$foo = 34.34 # gives 34.34 
$foo = 34.34.34 # gives """ 
$foo = "hello".34."hello" # gives an error 

나는 Perl 디버거로 시험해 보았다. 제 질문은 왜 Perl이 첫 번째 인수로 숫자와 문자열을 숫자로 연결하지 않고 그 반대의 경우에도 제대로 작동하지 않는 이유입니다. 왜 지금

답변

8

모든합니다. 34.34.34 펄에서 "" "제공하지 않습니다 다음, 공백이 중요하다. 34 . "hello""34hello"입니다. 34.은 (아마도 34.5) 부동 소수점 숫자의 시작처럼 보이기 때문에 34."hello"는 구문 분석 오류입니다 다음 파서는 필요한 것 숫자 다음은 도트 연산자의 주위에 공간을 사용하는 경우 귀하의 코드는 어쨌든 더 잘 볼 것입니다. 또 다른 숫자 대신 "을 얻을 때 무엇을 알고 있지만하지 않습니다.

34.34.34version string 또는 "v-string"이라고 불리는 특수 구조로 mu와 함께 숫자가있을 때 발생합니다 그 안에 하나의 점들 (임의로 앞에 v이 붙음). 각. 자 x 호이 v. 자열의 x 호에서 오는. 자열을 작성합니다. 따라서 34.34.34chr(34) . chr(34) . chr(34)과 같으며 chr(34)은 큰 따옴표이므로 '"""'과 같습니다. V- 문자열은 버전 번호가 예상되는 방식을 비교하기 때문에 유용합니다. 숫자가 5.10 < 5.9이지만 버전은 5.10.0 gt 5.9.0입니다.

+2

답장을 보내 주셔서 감사합니다. 다음 번에 내 자신을 어떻게 찾을 수 있을까요? 설명서에서 사용할 수 있습니까? 저에게 도움이 될 것입니다. @hobbs – xtreak

+4

@Wordzilla는 가능한 한 많은 perldocs를 읽으며, 특히'perlsyn','perldata' 및'perlop'을이 항목에 사용합니다 : – hobbs

+0

Thanks @hobbs 나는 Perlop에서 사용할 수 없다고 생각합니다. 그것은 연결을위한 이진 연산자로 이것을 보여주고이 경우를 다루지 않습니다. 의사 소통의 정확한 출처 또는 인용문은 매우 유용합니다. – xtreak

5

우수 질문.

3434/100 == 34.34 

참고 소수 구분해야한다 :

  1. 그것은 연결 연산자

    my $x = 34; 
    my $y = 34; 
    say $x.$y; # 3434 
    
  2. 이는 부동 소수점 숫자 리터럴에서 소수점 구분자의 다음 . 문자는 여러 의미를 갖는다 완전한 부분 바로 다음에 또는 연결로 해석됩니다. 34 .34 == 3434

  3. v 문자열 ("v"는 일반적으로 버전을 의미 함)의 구분 기호입니다. V 자 문자열에서 각 문자를 마침표로 분리되고, 선택적으로 v 접두어 :

    각 숫자는 해당 문자로 변환된다
    34.34.34 eq v34.34.34 
    

    예컨대 64.64.64 eq "@@@".

+1

답변을 주셔서 감사합니다. 어떻게 대답을 찾을 수 있습니까? 그것은 doc에서 발견 되었습니까? Perl 프로그래밍 중입니다. 대답에 소스 또는 링크를 제공하면 매우 도움이됩니다. – xtreak

+1

@Wordzilla hobbs가 대답에 대한 설명으로 맨 페이지의 이름을 게시했습니다. http://perldoc.perl.org/에서 온라인으로 읽을 수도 있습니다 (검색 필드에 페이지의 이름을 입력하기 만하면됩니다). – amon

관련 문제