2014-04-18 3 views
1

perl 스크립트로 파일을 읽어야합니다.perl에서 읽기 위해 파일을 열 수 없습니다.

print "Input file name: "; 
$file = <>; 
open($fileHandle, "<", $file) or die "cannot open < $file: $!"; 

결과 :

cannot open < scores.dat 
: No such file or directory at ./project5.pl line 6, <> line 1. 

이 I를하는 내가 찾은 자원의 대부분이 할 얘기 무슨 짓을하지만 같은 오류가 계속 여기 내 코드입니다 매번 오류가 발생합니다. 어떤 아이디어라도, 나는 perl에 익숙하지 않아서 어리석은 실수를 할 준비가되어 있지만, 그렇습니다. scores.dat는 존재합니다.

+1

참조 용 : http://perldoc.perl.org/functions/chomp.html – chilemagic

답변

4

end-of-line 문자를 읽고 파일 이름을 포함하는 변수에서 제거하지 않는 것 같습니다 (파일이 존재하지 않는다고 말하는 메시지를 인쇄 할 때 파일 이름 사이에 줄 바꿈이 있음). 콜론 ":"). 파일 이름을 얻은 다음 줄을 추가하십시오.

chomp $file; 

이렇게하면 줄 끝에 줄 바꿈 문자 만 제거됩니다.

chompchop을 혼동하지 마십시오 (후자는 내용에 관계없이 문자열의 마지막 문자를 제거합니다).

편집 : 내 오타를 잡기위한 ThisSuitIsBlackNot 덕분입니다.

1

$file에 저장중인 사용자 입력에서 줄 끝 문자를 제거해야합니다.

당신은 대체 수동으로이 작업을 수행 할 수 있습니다 :

$file = <>; 
$file =~ s/\n$//; 

또는 더 나은의 씹는 사용 : 다른 메모에서

$file = <>; 
chomp($file); 

을, 당신의 "scores.dat"파일이 존재합니다 현재 스크립트와 관련하여 다른 디렉토리에 있으면 상대 경로를 사용하고 있는지 확인하거나 $file에 dir 경로를 추가하십시오.

+0

"현재 디렉토리와 관련"을 읽어야합니다. Perl 스크립트의 위치는 부적합합니다. – justintime

+0

주목 ... 고마워요. –

0

는 더 명백 할 것이다 (미래의 공간에서 어쩌면 나)

open my $fileHandle, "<", $file or die "cannot open '$file': $!"; 

그런 불량 줄 바꿈 사용 감지, 다른 답변에 동의

chomp $file; 

을하기 위해 사용합니다.

관련 문제