性格いい人が優勝

お世話になります。

今、Perlで文字列を抽出するプログラムを作っています。
プログラムのソースは以下の通りです。

#!/usr/bin/perl

$cutString = "\\\\disk ..省略.. 9\\";

while(<>) {
if(/\A$cutString(.+);/){
print "$1\n";
}
}

これをシェルで、パイプでgrepしてきた行に適用したいと考えています。
シェルの内容は簡単に示すと

grep "aaa" aaa.txt | perl test.pl > test.txt

のような形になっています。
このシェルを実行すると
Unmatched ) in regex; marked by <-- HERE in m/\A\\disk ..省略.. 9\(.+) <-- HERE ;/ at test.pl line 7, <> line 1.
というエラー文が二回返ってきます。
いろいろと調べたのですが解決方法がわかりません。どうにか動かす方法をご教授お願いします。

A 回答 (1件)

> Unmatched ) in regex; marked by <-- HERE in m/\A\\disk ..省略.. 9\(.+) <-- HERE ;/ at test.pl line 7, <> line 1.



「\(」部分で左括弧がエスケープされています。
その為、正規表現のキャプチャ用の右括弧があるのがおかしいというエラーです。


詳細が不明ですが、以下ではどうですか?
$cutString = "\\\\disk ..省略.. 9\\\\";
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
エラーになっている理由がわかったため、対処してみたところ無事動きました!
ありがとうございました!!

お礼日時:2015/12/30 15:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!