문자열을 float 값으로 변환 할 수있는 int()
과 같은 함수가 있습니까? 나는 현재 다음과 같은 코드를 사용하고 있습니다 : 내가 떠 substr
에 의해 반환 된 문자열을 변환 할 필요가Perl을 사용하여 문자열을 float로 변환하려면 어떻게해야합니까?
$input=int(substr($line,1,index($line,",")-1));
합니다.
문자열을 float 값으로 변환 할 수있는 int()
과 같은 함수가 있습니까? 나는 현재 다음과 같은 코드를 사용하고 있습니다 : 내가 떠 substr
에 의해 반환 된 문자열을 변환 할 필요가Perl을 사용하여 문자열을 float로 변환하려면 어떻게해야합니까?
$input=int(substr($line,1,index($line,",")-1));
합니다.
그냥 사용하십시오. Perl에서 숫자처럼 보이는 문자열은 숫자입니다.
use Scalar::Util qw/looks_like_number/;
$input=substr($line,1,index($line,",")-1);
if (looks_like_number($input)) {
$input += 1; # use it as a number!
}
당신이 남아 샘플 입력을 기반으로 : 당신이 그것을 사용 전에 것은 숫자 되어 있는지 확인하려면
이제 다음을 수행 Scalar::Util
의 유틸리티 메소드가있다 코멘트 번호를 추출하는보다 강력한 방법은 다음과 같습니다
$line =~ /([^\[\],]+)/; # <-- match anything not square brackets or commas
$input = $1; # <-- extract match
나는 당신의 데이터가 어떻게 생겼는지 모르겠지만, 당신이 substr 세 번째 인수가 길이 아니라는 것을 깨닫게 않습니다 위치, 그렇지? 또한, 첫 번째 위치는 0입니다. 당신이 얻고 있다고 생각하는 데이터를 얻지 못했다고 생각합니다. 그리고 문자열의 시작 부분에서 시작하여 하나만 떨어져 있기 때문에 대부분 우연히 작동합니다.
데이터는 "["로 시작합니다. 따라서 substr.Ofcourse의 두 번째 인수로 0이 아닌 1로 시작하는 것이 현명합니다. 세 번째 인수는 숫자 여야합니다. 코드에서 어떤 점을 생각하면 우리는 그것을 간과했다? – fixxxer
index()는 당신이 그것을 간과했다고 생각하게 만들고 Perl이 숫자라고 생각하는 것을 추출하지 않는다고 생각합니다. 추측 할 필요가 없도록 입력 데이터를 포함한 완전한 예제를 보여주십시오. –
'$ line'이 어떻게 생성되는지 예를 들려 줄 수 있습니까? –
로그 파일에서 $ line을 읽습니다. open (fHandle, "+ <", $ path) 또는 죽는 "$!"; foreach $ line () \t \t {\t $ input = int (substr ($ line, 1, index ($ line, ",") - 1))); } 이것은 완전한 코드입니다. –
fixxxer
파일에서 예제 라인을 얻을 수 있을까요? 더 나은 방법으로 번호를 추출 할 수 있습니다. – slebetman