Perl 파일 핸들 상세 설명

3797 단어 펄 파일 핸들
파일 I/O 에서 한 파일 에서 데 이 터 를 읽 으 려 면 프로그램 이 먼저 운영 체제 함 수 를 호출 하고 파일 이름 을 전송 하 며 이 파일 로 가 는 경 로 를 선택 하여 파일 을 열 어야 합 니 다.이 함 수 는 펄 파일 핸들(filehandle)의 순서 번 호 를 되 찾 습 니 다.이 펄 파일 핸들 은 열 린 파일 에 대한 유일한 식별 근거 입 니 다.파일 에서 데 이 터 를 읽 으 려 면 프로그램 이 함수 ReadFile 을 호출 하고 펄 파일 핸들 을 메모리 에 있 는 주소 와 복사 할 바이트 수 를 운영 체제 에 전송 해 야 합 니 다.작업 이 완료 되면 시스템 함 수 를 호출 하여 이 파일 을 닫 습 니 다.
나 만 의 철학 자 를 모방 하여 인공지능 프로그램 을 만 드 는 것 외 에 당신 의 프로그램 은 외부 와 통신 하지 않 는 방법 을 사용 합 니 다.학급 예 에서 세 번 째 와 네 번 째 줄 에서'GRADES'를 볼 수 있 습 니 다.이것 은 다른 Perl 파일 을 참조 하 는 데이터 형식 으로 근거 손잡이(filehandle)라 고 합 니 다.하나의 핸들 은 당신 이 처리 하고 있 는 이름 을 기억 하고 캐 시 등의 복잡성 을 숨 길 수 있 도록 파일,장치,파이프(socket)또는 파이프 의 이름 을 주 는 것 입 니 다.내부 에 서 는 C++언어의 흐름(streams)이나 BASIC 의 I/O 채널 과 같은 핸들 이 서로 다른 곳 에서 입력 하고 출력 하 는 것 이 쉬 워 집 니 다.펄 을 좋 은 언어 로 만 드 는 이 유 는 여러 파일 과 통신 하고 한 번 에 처리 할 수 있 기 때문이다.외부 대상 에 게 좋 은 기호 이름 은 좋 은 언어의 구성 부분 이다[1].
다른 펄 은 좋 은 언어 입 니 다.8 비트 입 니 다.끼 워 넣 을 수 있 습 니 다.확장 모드 를 통 해 펄 에 다른 프로그램 을 끼 워 넣 을 수 있 습 니 다.그것 은 간단명료 해서 인터넷 에서 사용 하기 쉽다.환경 적 으로 명확 하고 대화 하기 쉽다.너 는 많은 다른 방법 으로 그것 을 인용 할 수 있다.한 마디 로 하면 언어 자체 가 이렇게 엄격 한 구조 가 아니 기 때문에 너 는 그것 이 너의 문 제 를 초과 하 게 해 서 는 안 된다.다시 TMTOWTDI 로 돌 아 왔 습 니 다.
핸들 을 만 들 고 open 함 수 를 통 해 파일 과 연결 합 니 다.open 에는 두 개의 인자 가 있 습 니 다.핸들 과 연결 하고 싶 은 파일 이름 입 니 다.Perl 도 미리 정 의 된 핸들 을 제공 합 니 다.STDIN 은 프로그램의 정상 적 인 입력 채널 이 고 STDOUT 는 프로그램의 정상 적 인 출력 채널 입 니 다.STDERR 은 도시락 으로 입력 을 출력 으로 바 꿀 때 프로그램 이 설명 을 할 수 있 는 추가 출력 채널 이다[2].
일반적으로 이 핸들 들 은 터미널 과 연결 되 어 있 기 때문에 프로그램 을 입력 하고 볼 수 있 지만 파일 과 연결 할 수 있 습 니 다.Perl 은 운영 체제 가 제공 되 었 기 때문에 미리 정 의 된 핸들 을 줄 수 있 습 니 다.UNIX 에서 프로 세 스 는 부모 프로 세 스(일반적으로 셸)로부터 표준 입력,출력,오 류 를 계승 합 니 다.셸 의 책임 중 하 나 는 하위 프로 세 스 가 이러한 것 을 고려 하지 않도록 이 I/O 흐름 을 만 드 는 것 이다.여러 가지 목적(입력,출력,파이프)을 위해 open 함 수 를 사용 하여 핸들 을 만 들 수 있 으 니 무엇 을 해 야 하 는 지 밝 혀 야 합 니 다.유 닉 스 명령 행 처럼 파일 이름 에 간단하게 문 자 를 추가 하 세 요.

open(SESAME,"filename");#
open(SESAME,"<filename");# ,
open(SESAME,">filename");#
open(SESAME,">>filename");#
open(SESAME,"|output-pipe-command");#
open(SESAME,"input-pipe-command|");#
보시 다시 피 당신 은 마음대로 이름 을 고 를 수 있 습 니 다.핸들 SESAME 를 열 면 파일 이나 파 이 프 를 액세스 하 는 데 사 용 됩 니 다.(close(SESAME)를 사용 하거나 같은 핸들 의 일련의 open 에 이 핸들 을 다른 파일 과 연결 할 때 까지 사용 할 수 있 습 니 다[3].
열 린 핸들 을 여 는 것 은 첫 번 째 파일 을 암시 적 으로 닫 는 것 입 니 다.펄 파일 핸들 을 사용 할 수 없 게 하고 다른 파일 을 엽 니 다.너 는 이것 이 네가 진정 으로 하고 싶 은 것 이 라 고 조심해 야 한다.가끔 우연히,예 를 들 어 open($handle,$file)을 열 었 을 때$handle 은 빈 문자열(null)을 포함 합 니 다.$handle 을 하나의 양 으로 설정 하 는 지 확인 하 십시오.그렇지 않 으 면 빈 핸들 에 새 파일 을 열 것 입 니 다.입력 을 위해 핸들 을 열 었 거나 STDIN 을 사용 하면'줄 읽 기 동작'<>을 사용 하여 줄 을 읽 을 수 있 습 니 다.이것 도 다이아몬드 조작 으로 유명 하 다.왜냐하면 그것 의 형상 때문이다.이 다이아몬드 작업 은 읽 고 싶 은 핸들()[4]을 포함 합 니 다.STDID 핸들 을 사용 하여 사용자 가 제공 한 답 을 읽 습 니 다.다음 과 같 습 니 다.
빈 다이아몬드 조작<>은 명령 행 에서 지정 한 모든 파일 을 읽 습 니 다.지정 하지 않 으 면 STDIN 에서 읽 습 니 다.(이것 은 많은 유 닉 스"필터"프로그램의 표준 행동 입 니 다)

printSTDOUT"Enteranumber:";#
$number=<STDIO>;#
printSTDOUT"Thenumberis$number";#
너 는 우리 가 너 에 게 준 예 를 이해 하 니?print 구문 에서 STDOUT 는 무엇 을 합 니까?이것 이 바로 당신 이 출력 핸들 을 사용 하 는 방법 중의 하나 입 니 다.하나의 핸들 은 print 문장의 첫 번 째 매개 변수 로 사용 할 수 있 습 니 다.존재 하면 어디로 출력 하 는 지 알려 줍 니 다.예 를 들 어,출력 이 이미 STDOUT 이기 때문에,핸들 은 불필요 하 다.입력 의 부족 은 STDIN 이 고 출력 에 대한 부족 은 STDOUT 입 니 다.(학급 예 의 18 줄 에서 우 리 는 너 를 헷 갈 리 게 하지 않도록 생략 했다.)우리 도 너 로 하여 금 이해 하지 못 하 게 하 는 일이 있다.만약 당신 이 위의 예 를 시험 해 본다 면,당신 은 특별한 빈 줄 을 얻 었 다 는 것 을 알 수 있 습 니 다.읽 을 때 입력 줄 에서 줄 바 꿈 문자(new line)를 자동 으로 삭제 하지 않 았 기 때 문 입 니 다.예 를 들 어'9'를 입력 하 십시오.이 경우 줄 바 꿈 자 를 삭제 하려 면 펄 은 chop 과 chomp 함 수 를 제공 합 니 다.chop 은 마지막 문 자 를 구별 없 이 삭제 하고 되 돌려 줍 니 다.chomp 는 기록 표지 의 끝(일반적으로"")만 삭제 하고 삭 제 된 문자 수 를 되 돌려 줍 니 다.

좋은 웹페이지 즐겨찾기