教えてください。ブラケットで囲まれ、かつその後に特定のキーワードが来る文字列のリストを作成したいのですが...
例えば、キーワードを "定食","弁当"...と仮定して、入力ファイル内の
[うなぎ]定食 [焼肉]ランチ [さば]弁当
をリストアップしたいのです。素人考えでしょうが、以下のように書きました。

#! usr/locsl/bin/per
@keyword = ("定食","弁当","ランチ","セット"); #キーワードのリストを配列に。
while (<>) {                 
$sentence = $_; #入力の各行を、変数$sentenceに。
if ($sentence =~ /\[[^\[]*?\]/ ) { #ブラケットがある行を、正規表現で探す(一行に複数あるかもしれない)。
foreach (@keyword) { #キーワードをひとつずつ当てはめ。
if ($sentence =~ /(\[[^\[]*?\]$keyword)/g) { #ブラケット+キーワード
ptint "&$\n";              # &$で、前の行で取り出した行を印刷。
}}}

どうしても ]定食 ]ランチ と、後部ブラケット以下しか、表示されません。print $1にしても同じです。
自分でも考えてみたつもりです。どなたか、教えてください。