基本的にバイナリで行き来するのでencode/decodeする必要があるのか。
$ cat hoge.txt 日本語 英語 フランス語
で、
#!/usr/bin/perl use feature qw(say); use utf8; use Encode qw(encode decode); my $word = "日本語"; my $enc_word = encode('UTF-8', $word); my $result = decode('UTF-8', `grep $enc_word hoge.txt`); say encode('UTF-8', $result);
日本語
とうまくいく
テキストがEUC-JPの場合は
#!/usr/bin/perl use feature qw(say); use utf8; use Encode qw(encode decode); my $word = "日本語"; my $enc_word = encode('EUC-JP', $word); my $result = decode('EUC-JP', `LANG=ja_JP.eucJP grep $enc_word hoge_euc.txt`); say encode('EUC-JP', $result);