Perl에서 텍스트 파일로 출력을 작성하는 동안 파일 처리기가 중단됨

주권

로그 파일을 만든 perl 스크립트가 있으며이 스크립트가 수행하는 모든 작업은 로그 파일에 기록됩니다.

잘 작동하고 일부 문제를 해결하기 위해 일부 변경했지만 이제 이상한 문제가 발생하고 파일 처리기가 로그 파일을 작성하는 동안 중단되고 스크립트를 종료 할 때까지 로그 파일을 업데이트하지 않습니다. 종료 (x) 옵션 포함.

예를 들어, 내 스크립트는

  1. 추출물

  2. 확인

  3. 백업

    X. 종료

이제 추출을 실행하고 로그를 업데이트하고 있습니다. 하지만 extrcation이 완료되는 동안 로그 파일을 열었고 마지막 줄을 볼 수 있습니다.

Date: XYZ file extracted.    
Date: XXXX file is preparing to extract
Date:

모든 파일의 압축을 푼 후에도 더 이상 업데이트하지 않으면 X 옵션을 사용하여 스크립트를 종료하고 그 후에야 전체 로그를 볼 수 있습니다.

나는 그것이 왜 붙어 있는지 이해하지 못하며 이것은 다른 모든 옵션에서도 발생합니다. 이전에는 잘 작동했습니다. 단순히 파일 처리기를 사용하고 인쇄하여 리디렉션합니다.

open FILE, ">>log.txt" 
    
## DO some thing

print FILE $output;

어떤 사람이 문제가 무엇인지 말해 줄 수 있습니까?

무거운

파일 버퍼링 이 발생했습니다 . 이것은 대부분의 프로그래밍 언어가하는 정상적인 일입니다. 디스크 나 터미널에 쓰는 속도가 느리기 때문에 각 print 문이 반드시 즉시 기록되는 것은 아닙니다. 출력은 일반적으로 메모리에 저장되고 (즉, "버퍼링 됨") 특정 양이나 특정 문자에 도달하면 기록됩니다.

기본적으로 STDERR는 버퍼링되지 않습니다. STDOUT터미널에 대한 것은 일반적으로 줄 버퍼링입니다. 즉, 개행을 볼 때 쓰게됩니다. 파일은 일반적으로 시스템에 따라 4K 또는 8K 블록으로 버퍼링됩니다.

로그 파일의 경우이 버퍼링을 해제하는 것이 좋습니다. 모든 파일 핸들 그래서 사용, IO :: 핸들 방법에 응답 IO :: 핸들 방법을 autoflush이 작업을 수행 할 수 있습니다.

# Because you've forgotten to check if the file opened.
use autodie;

open my $fh, ">>", $log_file;
$fh->autoflush(1);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파일에 출력하는 동안 텍스트 추가

분류에서Dev

USB 디스크로 파일을 전송하는 동안 Rsync가 중단됨

분류에서Dev

출력을 텍스트 파일로 리디렉션하는 것은 Batch에서 작동하지 않습니다.

분류에서Dev

URL에서 파일을 여는 동안 VBA 코드가 중단됨

분류에서Dev

Perl에서 실행하는 동안 bash 스크립트의 출력을 로그 파일 및 stdout에 기록합니다.

분류에서Dev

단위 테스트 케이스를 작성하는 동안 Cucumber 기능 파일에서 단계 정의로 정수 배열을 전달하는 방법

분류에서Dev

스크립트 출력을 필터링하고 파일로 리디렉션하는 동안 화면에 인쇄

분류에서Dev

각 디렉토리에서 동일한 이름으로 시작하는 fasta 파일을 단일 출력 파일로 추출하십시오.

분류에서Dev

Windows : 출력을 보는 동안 명령 줄을 텍스트 파일로 리디렉션

분류에서Dev

read () 시스템 호출을 사용하여 파일을 읽는 동안 프로그램이 중단됨

분류에서Dev

다른 모든 것을 파일로 보내는 동안 단일 출력을 터미널에 작성

분류에서Dev

R에서 큰 csv 파일을 처리하는 동안 중단 방지

분류에서Dev

텍스트 파일을 실시간으로 캡처하고 출력 한 다음 이전 텍스트 파일 세트가없는 경우에만 다시 캡처

분류에서Dev

perl 스크립트에서 파일을 처리하는 동안 어떤 조건까지 필요한 grep 방법

분류에서Dev

Perl을 사용하여 파일에서 키워드를 찾고 텍스트 파일로 출력

분류에서Dev

누락 된 시트가있는 파일을 처리하는 동안 여러 Excel 파일에서 단일 시트 연결

분류에서Dev

bash : 파일을 읽는 동안 중첩 됨-출력 없음

분류에서Dev

텍스트 파일을 작성하는 동안 Python에서 For 루프를 적용하는 방법

분류에서Dev

시스템 명령을 사용하여 stdout 및 stderr 출력을 파일로 리디렉션하는 것이 Perl에서 작동하지 않습니다.

분류에서Dev

폴더의 모든 파일을 처리하고 모든 출력을 동일한 파일 이름으로 다른 폴더에 저장하는 Bash 스크립트?

분류에서Dev

텍스트 파일에서 읽는 동안 셀을 이중 값으로 변환 MATLAB

분류에서Dev

인식 할 수없는 출력을 제공하는 동일한 텍스트 파일에 두 개의 읽기 및 추가 프로그램

분류에서Dev

텍스트 처리-모든 행에서 패턴과 일치하는 파일을 출력하는 방법

분류에서Dev

16.04-서명 된 .odt 파일을 여는 동안 LibreOffice Writer 5.4.0.3이 중단됨

분류에서Dev

for 루프로 읽는 동안 텍스트 파일에 가상 추가 줄을 추가하는 방법

분류에서Dev

Perl로 텍스트 파일을 스트리밍하는 방법

분류에서Dev

C #-텍스트 파일에 쓰는 동안 출력 파일이 생성되지 않습니다.

분류에서Dev

Perl 프로그램을 사용하여 파일에서 텍스트 찾기

분류에서Dev

PHP 스크립트를 텍스트 파일에 자동으로 작성하기

Related 관련 기사

  1. 1

    파일에 출력하는 동안 텍스트 추가

  2. 2

    USB 디스크로 파일을 전송하는 동안 Rsync가 중단됨

  3. 3

    출력을 텍스트 파일로 리디렉션하는 것은 Batch에서 작동하지 않습니다.

  4. 4

    URL에서 파일을 여는 동안 VBA 코드가 중단됨

  5. 5

    Perl에서 실행하는 동안 bash 스크립트의 출력을 로그 파일 및 stdout에 기록합니다.

  6. 6

    단위 테스트 케이스를 작성하는 동안 Cucumber 기능 파일에서 단계 정의로 정수 배열을 전달하는 방법

  7. 7

    스크립트 출력을 필터링하고 파일로 리디렉션하는 동안 화면에 인쇄

  8. 8

    각 디렉토리에서 동일한 이름으로 시작하는 fasta 파일을 단일 출력 파일로 추출하십시오.

  9. 9

    Windows : 출력을 보는 동안 명령 줄을 텍스트 파일로 리디렉션

  10. 10

    read () 시스템 호출을 사용하여 파일을 읽는 동안 프로그램이 중단됨

  11. 11

    다른 모든 것을 파일로 보내는 동안 단일 출력을 터미널에 작성

  12. 12

    R에서 큰 csv 파일을 처리하는 동안 중단 방지

  13. 13

    텍스트 파일을 실시간으로 캡처하고 출력 한 다음 이전 텍스트 파일 세트가없는 경우에만 다시 캡처

  14. 14

    perl 스크립트에서 파일을 처리하는 동안 어떤 조건까지 필요한 grep 방법

  15. 15

    Perl을 사용하여 파일에서 키워드를 찾고 텍스트 파일로 출력

  16. 16

    누락 된 시트가있는 파일을 처리하는 동안 여러 Excel 파일에서 단일 시트 연결

  17. 17

    bash : 파일을 읽는 동안 중첩 됨-출력 없음

  18. 18

    텍스트 파일을 작성하는 동안 Python에서 For 루프를 적용하는 방법

  19. 19

    시스템 명령을 사용하여 stdout 및 stderr 출력을 파일로 리디렉션하는 것이 Perl에서 작동하지 않습니다.

  20. 20

    폴더의 모든 파일을 처리하고 모든 출력을 동일한 파일 이름으로 다른 폴더에 저장하는 Bash 스크립트?

  21. 21

    텍스트 파일에서 읽는 동안 셀을 이중 값으로 변환 MATLAB

  22. 22

    인식 할 수없는 출력을 제공하는 동일한 텍스트 파일에 두 개의 읽기 및 추가 프로그램

  23. 23

    텍스트 처리-모든 행에서 패턴과 일치하는 파일을 출력하는 방법

  24. 24

    16.04-서명 된 .odt 파일을 여는 동안 LibreOffice Writer 5.4.0.3이 중단됨

  25. 25

    for 루프로 읽는 동안 텍스트 파일에 가상 추가 줄을 추가하는 방법

  26. 26

    Perl로 텍스트 파일을 스트리밍하는 방법

  27. 27

    C #-텍스트 파일에 쓰는 동안 출력 파일이 생성되지 않습니다.

  28. 28

    Perl 프로그램을 사용하여 파일에서 텍스트 찾기

  29. 29

    PHP 스크립트를 텍스트 파일에 자동으로 작성하기

뜨겁다태그

보관