私はperlスクリプトでテキストファイルを作成し、キャプチャした行をガベージコレクションログから書き込み、アーカイブ/タイムスタンプされたフォルダに保存します。ファイルには、次のような行が含まれます。
413489.272:[GC [PSYoungGen:323892K-> 3126K(332352K)] 623290K-> 303976K(1031424K)、0.0253970秒] [時間:user = 0.03 sys = 0.00、real=0.02秒]
413503.531:[GC [PSYoungGen:319094K-> 7280K(333760K)] 619944K-> 310249K(1032832K)、0.0614640秒] [時間:ユーザー= 0.06 sys = 0.00、実数=0.06秒]
413521.441:[GC [PSYoungGen:324592K-> 6867K(333056K)] 627561K-> 310363K(1032128K)、0.0574120秒] [時間:user = 0.06 sys = 0.00、real=0.06秒]
...
私がやりたいのは、ファイル内のこれらの行を反復処理し、正規表現を使用して「リアルタイム」時間の値(たとえばreal=0.06 secs
、0.06のみ)を取得し、それを$time
変数に格納することです。私は、前向きな後ろ向きがこれに対してうまくいくと思います、のようなものです/(?<=real=)\d\.\d\d/
が、それはうまくいきません。
結局、私のスクリプトは次の行に沿って見えます。
open LOG,"<","./report/archive/reports-$now/gclog.txt" or die "Unable to read file: $!";
#while there is lines in the file
#regex to match time value -> store in variable
#print variable (just as a check for now)
#some other stuff not really relevant to this question
close LOG;
私はperlにかなり慣れていないので、どんな助けでも大歓迎です!