ActivePerl5.16.1使用中です。 --- print DAT @dat; --- このようにして配列を書き出そうとしたのですが なぜかテキストファイルに繁栄されません。 何か情報をご存知の方いらっしゃいませんか?
96 :
ファイルハンドルであろうDATのopen文はいかに
97 :
以下の一行スクリプトに文字を食わせて「XX月◯◯日のお知らせ!」の次の行から「-----」の前までを取り出そうとしています。 最期のs/^ +//は各行の先頭の全角の空白を取ろうとしたのですが、これが働きません。が、抜き取り自体は成功していました。 逆に、use utf8とすると/正規表現/が全くひっかかりらず何もprintされません。 perl -e ' #use utf8; while (<>) { if (/\d+月\d+日のお知らせ!/) { last; }; #skip the line; }; while (<>) { if (/-----/) { last; }; s/^\s+//; s/^ +//; print; }'
98 :
perl -e ' use utf8; while (<>) { if (/\d+月\d+日のお知らせ!/) { last; }; #skip the line; }; while (<>) { if (/-----/) { last; }; s/^\s+//; { no utf8; s/^(?: )+//; } print; }'
99 :
どうもです。 状況なのですが、use utf8すると全くおかしいです。/\d+月… /のマッチが全く成功しないので、 目的通りの結果が出ません。uset utf8しないとうまく動きます。 実はMacのautomatorから呼び出されていてGet text from Webpage actionでとってきたテキストが このperlに渡されているのですが…UTF-8の文字が来ているはずなのですが(指定のWebページのcharsetはUTF8)。 それはさておき ( ) / (?: ) の指摘ありがとうございました。上の行のs/^\s+//;と合わせて s/^(?:\h| |\xc2\xa0)+//; に書き換えました。 non breakable spaceも行頭に混じっていたので、そのUTF8表現のU+c2a0も追加。 これできれいに行頭の「空白」がとれて左詰めになりました。 とりあえずuse utf8;だけ殺して一見うまく動いているのでそれで利用を開始しました。 個人の趣味の自動化目的なのでそんな感じでまずはゴーしてしまいます。