- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メタ文字の取り扱い)
メタ文字の取り扱いエラーの解決法とは?
このQ&Aのポイント
- カレントディレクトリにディレクトリaaa, bbb, cccがあり、それぞれのディレクトリには1から20までの数字を_で2つつなげたディレクトリが存在します。
- getname.plというスクリプトを作成し、ディレクトリの中のファイル名を出力していますが、Unrecognized escape \d passed through at ./getname.pl line 9.というエラーが出ています。
- このエラーの原因と対処法について教えてください。
- みんなの回答 (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"; } } }
その他の回答 (1)
- Wr5
- ベストアンサー率53% (2173/4061)
回答No.1
>全く原因がわからないでいます。 opendir()の引数に正規表現が使えるのでしょうか?
質問者
お礼
ご返事遅れまして申し訳ありません。本とperldocで調べたのですが、opendir()に正規表現が使えるのか、の明確な解答を見つけることができませんでした。 ただ、他の関数の扱いはあっているようですので、おそらく、おっしゃる通り、opendir関数に正規表現が使えないのだと思います。 ご解答、どうもありがとうございました。
お礼
ご返信、遅れまして申し訳ありません。 詳細にスクリプトを書いていただきありがとうございました。勉強になります。 無事に成功しました。ありがとうございます。