16

Cygwin と Perl 5.14.2 で-i値のない perl のスイッチを使用すると.bakバックアップ ファイルが作成されるという信頼できる人からのバグ レポートがあります。perlrunのドキュメントによれば、そうすべきではありません:

If no extension is supplied, no backup is made and the current
file is overwritten.

現在、Cygwin にアクセスできません。他の誰かがこの動作を見ていますか? 説明できますか?一時ファイルに過ぎないはずのバックアップ ファイルを作成し、それを削除できなかったのは何か?

それを再現するために私が提案する手順は次のとおりです。これはCygwin用であることを忘れないでください:

  1. 空のディレクトリを作成して変更する
  2. そのディレクトリにテキスト ファイルを作成します。内容は重要ではない
  3. 走るperl -p -i -e 's/perl/Perl/g' filename
  4. 完了したら、 .bakファイルを確認します

そのバックアップ ファイルが見つかった場合に何が起こるかを説明するために、回答を保存しておいてください。「はい、わかりました」または「いいえ、再現できません」という以前のコメントに賛成票を投じることは、非公式の投票になる可能性があります。

4

2 に答える 2

17

perldoc perlcygwin sayeth (わかりやすくするために編集):

Windows 風の制限により、ファイルのインプレース編集では、編集中perl -i の各ファイルのバックアップを作成する必要があります。したがって、明示的なバックアップ拡張機能を使用しない場合、Perl は、.bakあたかも with で呼び出されたかのように、サフィックスを自動的に追加します。perl -i.bakperl -i

おそらく、この情報はperlportにもあるはずです。

于 2012-06-17T22:17:44.893 に答える