Language/Perl
[Perl] Scalar 변수 "연산자"
VIR&US
2023. 11. 19. 03:45
반응형
스칼라에 대입된 값이 "숫자"인지 "문자열"인지 확인하는 것은 불가능합니다.
- 정확하게 말하면 그럴 필요가 없어야 합니다.
- 사용하는 연산자에 따라 스칼라를 숫자로 취급할지 또는 문자열로 취급할지가 결정됩니다.
- 문자열 연산자를 사용하면 문자열처럼 동작하고 숫자 연산자를 사용하면 숫자로 동작합니다.
- 값의 유형이 달라 동작이 불가능하면 경고가 발생합니다.
숫자로 취급하여 비교하는 연산자
- <
- >
- <=
- >=
- ==
- !=
- <=>
- +
- *
문자열로 취급하여 비교하는 연산자
- lt
- gt
- le
- ge
- eq
- ne
- cmp
- .
- x
Example
#!/bin/perl use strict; use warnings; my $str1 = "4G"; my $str2 = "4H"; print $str1 . $str2; print "\n"; print $str1 + $str2; print "\n"; print $str1 eq $str2; print "\n"; print $str1 == $str2; print "\n"; print "yes" == "no"; print "\n";
Result
4G4H Argument "4H" isn't numeric in addition (+) at weak line 11. Argument "4G" isn't numeric in addition (+) at weak line 11. 8 1 Argument "no" isn't numeric in numeric eq (==) at weak line 17. Argument "yes" isn't numeric in numeric eq (==) at weak line 17. 1
Interpretation
- print $str1 . $str2; # "4G4H"
- print $str1 + $str2; # "8" 경고가 2개 발생
- print $str1 eq $str2; # "" (빈 문자열. 즉 false)
- print $str1 == $str2; # "1"(즉 Ture), 숫자, 4==4
- print "yes" == "no"; # "1" (즉 Ture), 경고가 2개 발생, 숫자로 사용되었기에 두 개 모두 0이 된다
728x90
반응형