1. ホーム
  2. perl

[解決済み] Perl の "make_path" と "remove_tree" は、オプションハッシュが空の場合、異なる結果になります。

2022-02-14 03:36:21

質問

私のモジュールには、次のようなコード行があります。

make_path($root_dir);

残念ながら、目的のディレクトリは作成されません(確認したところ、そこにパーミッションはありました)。

しかし、以下のように変更すると。

make_path($root_dir, {});

正常に動作しています。その数行前に、同じような奇妙な動作をする make_path($root_dir);make_path($root_dir, {}); . なぜこのようなことが起こるのか、何か思い当たることはありますか?

perl 5, version 16, File:Path version 2.09を使用しています。

どのように解決するのですか?

Path::Class::Dir クラスは、ハッシュベースのオブジェクトを作成します。

make_path の使い方は make_path(PATHS, OPTIONS_HASH) .

として Path::Class::Dir オブジェクトを渡すと、そのオブジェクトは次のようになります。 make_path の最後の引数は、オプションハッシュとして扱われます。

オプションハッシュを明示的に指定することで、これを回避することができます。

make_path($path, {})

または、明示的にパスを文字列化することで

make_path("$path")