이것은 쉘 스크립트입니다. Perl에서 어떻게 동일한 작업을 수행합니까?쉘 스크립트를 Perl로 포팅하려면 어떻게해야합니까?
prfile=~/sqllib/db2profile
profile()
{
if [ -f $prfile ] && [ "$prfile" != "" ];
then
. $prfile
else
read -p "Enter a valid Profile : " prfile
profile
fi
}
profile
여기 발견한다면 그것은 다시 근무 적절한 프로파일 파일
업데이트
#!/usr/bin/perl
use strict;
use warnings;
my $profile = "$ENV{'HOME'}/sqllib/db2proile";
# default profile
while (not -e $profile) { # until we find an existing file
print "Enter a valid profile: ";
chomp($profile = <>); # read a new profile
}
qx(. $profile);
대한 사용자 요청 다른 . $prfile
으로 실행 프로파일 파일에 대한 검사. 다른 컴퓨터에서 서로 다를 때 홈 디렉토리를 하드 코드하지 말고 동적으로 지정합니다. 나는 쉘을 가지고 Perl을 사용하여 성취하려고 노력하고있다.
스크립트의 특정 부분이 어떤 문제를 일으키고 있습니까? 이 스크립트의 첫 번째 작업은 변수에 값을 할당하는 것입니다. 만약 당신이 그것에 대해 어떻게 해야할지 모르겠다면, 여기에 도움을 청하기 전에 기본적인 Perl 튜토리얼로 시작해야합니다. – Quentin
** ~/sqllib/db2 **는 쉘의 **/home-direc/sqllib/db2 **와 같습니다. ** @ prfile = '~/sqllib/db2'**; , 그 작동하지 않는, 내가 할 때 **'~/sqllib/db2' **; 심지어 이것이 작동하지 않는 이유는 무엇입니까? – mviswa
"작동하지 않음"을 정의하십시오. 무슨 일이 일어날 것으로 예상됩니까? 실제로는 어떻게됩니까? '@prfile = '~/sqllib/db2 ''는 출력을주지 않아야합니다 ('my use'를 잊어 버렸기 때문에'** strict **'를 사용하지 않으면 ** 오류가 발생합니다). '~/sqllib/db2'는 Perl에서 아무 것도 의미하지 않기 때문에 오류가 발생합니다. (어째서 지구상에 배열을 사용하는 이유는 무엇입니까?) – Quentin