-1

プロファイルファイルが存在することを確認する必要があるので、テスト目的でこれを作成しました

#!/usr/bin/perl
use strict;
use warnings;

my $prfle=`~/sqllib/db2profile`;
print $prfle;

しかし、その印刷は何も...

スクリプトはプロファイルファイルをチェックし、見つからない場合は、有効なパスが提供されてそのプロファイルファイルを実行するまでユーザーに尋ねます。これをシェルスクリプトで正常に実装しましたが、perlで問題が発生しました。

4

2 に答える 2

4

Perlでは、バックティックはシェルコマンドを実行します。たとえば、これはhiを出力します。

`echo hi`;

ファイルが存在するかどうかを確認するには、次を使用します-e

$prfle= '~/sqllib/db2profile';
if (-e $prfle) {
    print "File Exists!\n";
}

文字列リテラル'をバッククォートする代わりに一重引用符で囲んでください。`

于 2013-02-24T16:03:57.427 に答える
2

あなたのコメントに基づいて、私はあなたがこのようなものが欲しいと思う:

my $profile = '';                     # 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);                         # execute this file

ファイルを実行するためのオプションは複数あります。qx()バックティックと同じで、標準出力を返します。system()実行されたコマンドに対してシステムから与えられた戻り値を返します。exec()コマンドを実行してperlスクリプトを終了し、。に続くコードを事実上無視しますexec。ニーズに基づいて、最適なオプションを選択してください。

于 2013-02-24T16:37:26.973 に答える