do EXPR
構成情報としてリストを返すだけの 2 つ目の .pl ファイルを使用して、Perl の関数を貧弱な構成パーサーとして使用しようとしています。do
(特に、コードに" " を記述できるため、これはおそらく の理想的な使用方法だと思いdo or die
ます。) 次に例を示します。
main.pl
# Go read the config file
my %config = do './config.pl';
# do something with it
$web_object->login($config{username}, $config{password});
config.pl
# Configuration file for main script
(
username => "username",
password => "none_of_your_business",
favorite_color => "0x0000FF",
);
Perldoc を読むと、相対パスに関する多くの役立つアドバイスが得られます - @INC の検索と %INC の変更、「.」を検索しない 5.26 に関する特別な警告。do
などなど。ただし、次のビットもあります。
# 指定されたファイル(./ および ../ 特殊ケース) を正確にロードします...
do を相対パス(./ と ../ を除く)で使用すると、次のようになります。
そして、「./」または「../」の特別なケースのパス処理を実際に説明することは決してありません-重要な省略です!
だから私の質問は、「あなたが実際に何が起こるか」のすべてのバリエーションdo './file.pl';
です。例えば...
- CWD は @INC から削除されていますが、この構文は 5.26 でも機能しますか?
- いずれにせよ「./」は誰の視点から見れば: Perl バイナリ、実行された Perl スクリプト、ユーザーのシェルからの CWD、または何か?
- 注意すべきセキュリティリスクはありますか?
- これは、@INC を変更してベース ファイル名を使用するよりも良いですか、悪いですか?
どんな洞察も高く評価されます。