나는 나를 위해 일부 데이터를 처리하는 동료로부터 상속받은 Perl 스크립트를 가지고 있습니다. 이전 서버에서는 예상되는 여러 오류 메시지를 실행하고 반환한 다음 출력 파일을 생성했습니다. 그것은 내 요구에 잘 작동합니다. 그러나 최근에 다른 편집 작업을 하지 않고 이전 서버에서 더 큰 새 그룹 서버로 옮겼는데 이제 계속하는 대신 첫 번째 오류 이후 종료되는 것 같습니다. 더 이상 오류가 발생하지 않으며 출력 파일이 생성되지 않습니다.
오류에도 불구하고 이 스크립트가 항상 실행되도록 하려면 어떻게 해야 합니까? 나는 Perl 코드 자체보다는 서버/Unix 수준에서 이 문제를 해결하려고 합니다. 왜냐하면 이 스크립트는 이미 다른 서버에서 잘 작동하기 때문입니다.
추가 세부 사항:
이전 서버에서는 Perl 5.26.1을 사용하고 있었습니다. 새 서버에서는 Perl 5.26.1이 설치되지 않았지만 Perl 5.16, 5.22.1 및 5.28.0에서 동일한 오류가 발생했기 때문에 Perl 버전에 대한 질문은 아닌 것 같습니다.
"set +e"를 사용해 보았지만 도움이 되지 않았습니다.
종료 상태는 255로 반환됩니다. 이는 종료 상태가 범위를 벗어났음을 의미합니다. 현재는 해당 서버에 액세스할 수 없기 때문에 이전 서버에서 어떤 종료 상태가 제공되었는지 모르겠습니다.
새 서버는 univa 그리드 엔진을 사용하여 작업을 대기열에 추가했지만 로그인 노드에서 스크립트를 실행해 보았지만 동일한 문제가 발생했기 때문에 이것이 UGE 특정 문제는 아닌 것 같습니다.
답변1
다음 명령을 사용하여 Perl 스크립트를 한 줄씩 디버깅할 수 있습니다.
perl -d script.pl
아래와 같이 메시지가 표시됩니다.
DB<1>
스크립트 끝에 도달할 때까지 "n"을 계속 입력하세요. 스크립트에서 오류가 발생하는 위치를 확인하고 그에 따라 스크립트 문제를 해결할 수 있습니다.