Perl を使用して、テキスト ファイルを解析していて、キーワードとファイル名を見つけたいのですが、そのファイルを開き (解析対象のファイルと同じディレクトリにあります)、そこからテキストを取得して挿入する必要があります。試合後。
file1 = 解析中のファイル
file2 = 含めるファイル
冒頭の 2 つのファイルの例:
file1
code code code
%include file2;
code code code
file2
(* a bunch of header information *)
function ( arg : type);
そして、後でfile1をどのように見せたいですか:
file1
code code code
(*%include file2;*)
(* a bunch of header information *)
function ( arg : type);
code code code
この置換を実行するための perl の開発に助けが必要です。
解析するファイルを取得して文字列として読み取る次の記述があります。この方法を使用してすでにいくつかの置換を実装しているため、この方法を維持したいと思いますが、残りはオープンシーズンです。私も物事を理解するのが好きなので、提出された解決策の簡単な説明を気にしないでいただければ幸いです.
#keep this part
open FILEHANDLE, "<", $file or die $!;
$string = do { local $/; <FILEHANDLE> };
#several other replace operations here already written
$string ~= s/match/replace;
#can rewrite this to be anything that works well
#match the include tag
if ($string =~ m/^%include\s+'(\w+).(PRO)'/gi)
{
#build the replace string
my $includefile = $1.'.'.$2;
my $replacestring = "(* $& *) \n";
open my INCLUDEHANDLE, "<", $includefile or die $!;
$replacestring += do { local $/; <INLCUDEHANDLE> }
# I am lost at this point
}
#this is dirty but it works
#close file for read
close FILEHANDLE;
#open file for write
open FILEHANDLE, ">", $file or die $!;
print FILEHANDLE $string;
#close file for write
close FILEHANDLE;
ファイルの読み取り/書き込み操作をクリーンアップし、file2 の内容を (* ヘッダー情報 *) から削除してから file1 に書き込むためのインターネット仲間:
file1
code code code
(*%include file2*)
function ( arg : type);
code code code