正規表現によって文字列を検索し、該当する文字列が存在する場合には存在する旨のメッセージを出力し、存在しない場合には存在しない旨のメッセージを出力するようなプログラムを作りたいのですが現在うまくいっておりません。ソースは以下になります。

#!/usr/bin/perl

$logfile= './log_euc.log'; # ログファイル

@logs = &read_file($logfile);

foreach $log (@logs) {
if ($log = ~/hogehoge/ ){
$log_stg = " 変数に文字列hogehogeは含まれています。 ";
}else{
$log_stg = " 変数に文字列hogehogeは含まれていません。 ";
}

print " 判定結果\n ";
print " $log_stg\n ";
}

sub read_file {
local($logfile) = $_[0];
open(IN,$logfile);
local(@files) = <IN>;
close(IN);
return @files;
}

検索対象のファイル「log_euc.log」は以下です。

hogehoge
mugemuge
riri
ari
siri
siursoiu
sojowijugo
hfsoiehrohogehoge

sjhoisjofhoge osihojfhoge
hsoghsoehogehogesoijggggg

検索結果は以下です。

判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。
判定結果
変数に文字列hogehogeは含まれています。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

if ($log = ~/hogehoge/ )



のイコールとチルダの間に空白が入っているせいではないでしょうか。

正しくは

if ($log =~ /hogehoge/ )

のようにチルダをスラッシュ側ではなくイコール側に付ければOKだと思います。
    • good
    • 0

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


人気Q&Aランキング