• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メタ文字の取り扱い)

メタ文字の取り扱いエラーの解決法とは?

このQ&Aのポイント
  • カレントディレクトリにディレクトリaaa, bbb, cccがあり、それぞれのディレクトリには1から20までの数字を_で2つつなげたディレクトリが存在します。
  • getname.plというスクリプトを作成し、ディレクトリの中のファイル名を出力していますが、Unrecognized escape \d passed through at ./getname.pl line 9.というエラーが出ています。
  • このエラーの原因と対処法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.2

aaa, bbb, ccc のディレクトリをそれぞれ opendir で開いて、目的のディレクトリ (11_2, 9_20 等) を取得するようにすればうまくいくと思います。 #!/usr/bin/perl use strict; use warnings; my @directory=qw/aaa bbb ccc/; foreach my $dname (@directory) { opendir(DIR,"./$dname") or die $!; my @sdir = readdir(DIR); close(DIR); foreach my $sdir (@sdir) { if (-d "./$dname/$sdir" and $sdir =~ /^\d+_\d+$/) { opendir(DIR, "./$dname/$sdir") or die $!; my @file = readdir(DIR); close(DIR); print join("\n", @file), "\n"; } } }

Murata0715
質問者

お礼

ご返信、遅れまして申し訳ありません。 詳細にスクリプトを書いていただきありがとうございました。勉強になります。 無事に成功しました。ありがとうございます。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>全く原因がわからないでいます。 opendir()の引数に正規表現が使えるのでしょうか?

Murata0715
質問者

お礼

ご返事遅れまして申し訳ありません。本とperldocで調べたのですが、opendir()に正規表現が使えるのか、の明確な解答を見つけることができませんでした。 ただ、他の関数の扱いはあっているようですので、おそらく、おっしゃる通り、opendir関数に正規表現が使えないのだと思います。 ご解答、どうもありがとうございました。

関連するQ&A