トップページ⇒tech
1001コメント296KB

Perlについての質問箱

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
全スレ見たけど、Perlのスレッドがないので一応立てます
質問したいこともあるしね、というわけでいきなり質問させてください

今Perlで正規表現の勉強をしていますが正規表現のあたりでつまづいています
「正規表現」とは文字が数式の一種という概念はわかるのですが、参考書の文献には
…「メタ文字」とはその文字字自信にマッチするのではなく、特別な機能を持つ文字です。
例えば「.」はメタ文字で任意の一文字とマッチします。そのため文字列「Abc」「ABC」「Axc」「A=c」
にマッチする正規表現は次のように書くことが出来ます
      A.c
メタ文字には次のものがあります
      \ . ・ + | ( ) [ ] { } ^ $
どの文字がメタ文字になるかは局面によって変わります…

これについての使い方が以後のこれらの文字についての説明を読んでも今ひとつぱっとしないのです。
この使い方を図説で説明されていないんですね。だれかこの使い方について
説明できる人いませんか?お願いします。

0002名無しさん@MeadowNGNG
どこ探したんですか?「けんさく」って知ってますか?
0003デフォルトの名無しさんNGNG
http://pc.2ch.net/test/read.cgi/tech/1017558579/
http://pc.2ch.net/test/read.cgi/tech/993665608/
http://pc.2ch.net/test/read.cgi/tech/991994996/

質問の意味がわかりません。
0004デフォルトの名無しさんNGNG
>>2
『Perlスクリプティング入門』という本ですよ
それまでは例としてスクリプト載っていたやつを実際に打って確かめてみるやり方で
いままでやってみたんだけど・・・このばあいの「検索」はどういう意味ですか?
>>3
こっちの説明が足りないってことかな?
0005hiroyukoNGNG
>>1

しんでください
0006デフォルトの名無しさんNGNG
>>1
あなたの言う質問箱って、質問するだけなのですか?
だれも答えなくてもいいんですか?
っていうか糞スレですか?
0007デフォルトの名無しさんNGNG
Web プログラミング板なら Perl スレたくさんありそうだね。
確認してないけど。
0008デフォルトの名無しさんNGNG
確かにどこからが引用でどこからが自分の文なのかわかりにくいな。

俺Perl知らないんだけど、その引用(らしき)文を読む限りじゃ
メタ文字=ワイルドカードみたいなもん
じゃないの?
0009hiroyukoNGNG
自分のためにスレ立てやがったのかコノヤロー
0010デフォルトの名無しさんNGNG
>>1
重複、1 に質問なので糞スレ度 2 に認定しよう。
おそらく、「Perl の質問スレ」 はなかったので立てたと反論するだろうが。

このスレを薦めとく。
CGIに依存しないPerlの話題一般
http://pc.2ch.net/test/read.cgi/php/991313362/
0011デフォルトの名無しさんNGNG
糞>>1と糞スレのハーモニー
0012デフォルトの名無しさんNGNG
ここの板で Perl スレといえば
Perlは結構使えるっぽいけどどうよ?
http://pc.2ch.net/test/read.cgi/tech/991994996/l50
だろ。

全スレ見たってホントですか?>>1
0013デフォルトの名無しさんNGNG
>>1は嘘をついている!
0014名無しさん@EmacsNGNG
>>8
このスレとは直接関係ないけどプログラム板に来るような人なら(perlのに限
らず)正規表現はひととおり知っておいた方が便利だよ。
0015デフォルトの名無しさんNGNG
未だに答えてもらえず悶える>>1を想像してみる。
0016デフォルトの名無しさんNGNG
Perl.NETが出るって本当ですか?
0017デフォルトの名無しさんNGNG
ageる前に検索すれ
0018デフォルトの名無しさんNGNG
s/正規表現/を語ろう/e
http://pc.2ch.net/test/read.cgi/tech/1015398955/
0019hiro ◆hiroHsTw NGNG
「俺は一歩先行くインターネット
CGIプログラミング入門」ってやつ読んでる
内容は古いけどわかりやすいです
0020デフォルトの名無しさんNGNG
ム板にもPerlスレがかなりあったんだな.
ほとんど糞だが(wara
0021デフォルトの名無しさんNGNG
パールライスはうまいなぁ。
00221NGNG
一通り目を通したつもりですが、スレを見落としたかもしれませんね。
でも、これは自分専用ではなくて他の人が使っても構いません。
0023デフォルトの名無しさんNGNG
ageないでください。誰も使いませんから。
0024デフォルトの名無しさんNGNG
うるせーハゲ
0025学者NGNG
賢い恐竜が立てたスレというのはここですか?
0026ごろさんNGNG
正規表現で、もしも「あいう」という文字列を2回マッチした場合
「2」と表示させたいのですが、どうすればいいのですか?
0027デフォルトの名無しさんNGNG
検索して調べればいいです。
0028デフォルトの名無しさんNGNG
$_ = $string;
@Arr = m/あいう/g;
$num = @Arr;

で、いいんじゃねーの?
0029デフォルトの名無しさんNGNG
>>26はマルチ
http://pc.2ch.net/test/read.cgi/tech/1018698417/
0030初心者NGNG
windows xp なんですが、perlの入れ方がよくわかりません。
activeperlダウンロードしてインストールしたのに、
うまく入ってないみたい・・・。
どなたか、xpですでにperl入れたよって方、
もしくは入れ方わかるよって方、
簡単にでいいのでやり方を教えてもらえませんか???m(__)m
0031このスレsageてくれNGNG
コマンドプロンプトで
>perl -v
って打ってみろ。
0032初心者NGNG
>31
どうもありがとうございました!
0033デフォルトの名無しさんNGNG
>>32
それで解決したんですか?(汗
0034デフォルトの名無しさんNGNG
Windows2000にActivePerlのインストールした時に
インストール先を間違えたので、一端アンインストールしたいのですが、
フォルダを削除する以外に、どこかにpathが書かれていたりしますか?
フォルダ削除だけで良いものか、教えて下さい。

0035デフォルトの名無しさんNGNG
>>34
素人が調子に乗るな。
0036デフォルトの名無しさんNGNG
コントロールパネルの「アプリケーションの追加と削除」で消したほうが良いんじゃない?

後は環境変数が追加されてるかな。
003734NGNG
documentationにはコントロールパネルの add/remove から削除しろと書いてあったのですが、
追加と削除にActivePealが無かったので焦りました。
AS package をインストールしていたようで、
ActivePerl 5.6.1 Windows MSI 版を上書きインストールして、
そこから削除する事ができました。 (多分 ^^;

>>36さん
どうもありがとうございました。
0038デフォルトの名無しさんNGNG
s/hoge/piyo/ge;
これは、どう置換されるのですか?
0039デフォルトの名無しさんNGNG
うーむ、e がついてるけど piyo だから、そのまま置換されるだけ
じゃないかな?
0040デフォルトの名無しさんNGNG
>>38
最後のeの部分がよくわからないのです。
ふだんPerlは使っていないんですけど、記事の中で使われていたので、どういう意味なのかと。
0041デフォルトの名無しさんNGNG
>34
「アプリケーションの追加と削除」でアンインストールする。

既にフォルダとかを消してしまった場合は、同じ条件で再インストール後、
「アプリケーションの追加と削除」からアンインストール。

それでもダメならOSから入れなおしてちょ。
004234NGNG
>>41
アンインストール無しのバージョンを入れてしまったので、
アンインストール有りのモノを同じディレクトリに上書きインストールして
その後、「アプリケーションの追加と削除」からアンインストールしました。

アドバイスありがとうございます。
0043とんちんかんNGNG
Perl を使ってあるWin2kのログ ファイルから必要な情報を別のテキスト ファイルに抽出
してるんですが、ちょっとした理由でこのログ ファイルが Unicode 形式になってしまいまいた。
でこのスクリプトで読み込んでみたら案の定白紙のテキスト ファイルを作ってくれました。
Perl で UCS2 のファイルの読み書きってできるんでしょうか?
Jcode.pmとかって使うんですか?
教えて君ですみません。
0044デフォルトの名無しさんNGNG
KENTのCGI改造し放題
0045デフォルトの名無しさんNGNG
>>44
ねーストしてあのスクリプトは問題。
0046デフォルトの名無しさんNGNG
2バイト文字かどうかの判別を行うスクリプトを書こうとしています。
(EUCの場合)
要は先頭バイトの最上位ビットが1ならば2バイトなので
C言語ならば
c & 0x80
これでいいと思いますが、
perlの場合はうまいことやる方法がわかりません。

$kana = "漢";
@kana = unpack "H2",$kana;
#先頭バイトを確保、この場合
#$kana[0] = b4となっている

$test = pack("H2",$kana[0]);
#b4をchar系にもどして

$test = $test >> 7;
#7ビットシフトして

if ($test){print "It's Kanji\n";}
#これで $testが1ならいいと思うのですが・・・

うまくいきません。
どなたかアドバイスを・・
0047名無しさん@EmacsNGNG
単純に 128 以上かどうか比べればいいんじゃないの。
0048デフォルトの名無しさんNGNG
普通にビット演算すりゃいいだろ。
つーかpackの使い方分かってませんね。
それ以前に@kanaの中身をしらべるっつーデバッグの基本中の基本もしてませんね。

print "ok\n" if((unpack 'C2', '漢')[0] & 0x80);

0049デフォルトの名無しさんNGNG
以下はこちらでどうぞ

http://pc.2ch.net/test/read.cgi/php/1019917048/

__END__
0050質問NGNG
文字列を可逆的に暗号化したいんだけど、
何かいいサブルーチンはないもんかね?
0051デフォルトの名無しさんNGNG
>>50
適当な値とxor取る。
0052質問NGNG
文字列を可逆的に暗号化したいんだけど、
何かいいサブルーチンはないもんかね?
0053質問NGNG
ありがとう。
0054デフォルトの名無しさんNGNG
正規表現のマッチした部分が入る変数の名前ってなんだっけ?
$@だっけ?
0055デフォルトの名無しさんNGNG
Perlの万能変数ってどうよ?
0056デフォルトの名無しさんNGNG
どうよって?
00571NGNG
あーウゼェウゼェ
本当は折れのためにだけ立てたスレだったんだが、途中でそれがバレそうになって
うやむやになったけど ほかの奴まで質問してきやがって
 目論見は敗れた このスレは閉鎖する サラバ!(もうあうこともないだろう)
0058棄教者 ◆witdLTi2 NGNG
>>54
$1 $2 $3 $4 ... $9
>>55
型グロブのこと? いいんじゃないの?
0059奈々氏NGNG
質問です
www5.ocn.ne.jp/~asdfg/send.cgi
www5.ocn.ne.jp/~asdfg/send.html
これなのですが、何度やっても
500 Internal Server Error
とでてしまいます。パールのパス、jcode.pl、cgi-lib.plの位置は確認しました
やはり文法エラーなのでしょうか。
詳しい方、指導お願いします。
ちなみに『ocnはCGI使えないよ』とかそういうあたりまえの突っ込みはやめてください
ocnにうpしたのはソースを見てもらうためです。
0060そんじゃNGNG
sendmail は使えるのか、と。
0061奈々氏NGNG
>60
使えます
確認しました
0062デフォルトの名無しさんNGNG
-c では syntax OK だな。
パーミッションは?
0063デフォルトの名無しさんNGNG
>>59

プログラムを大幅に削って、次の行だけで CGI として
ちゃんと動くのかを確認して欲しい。

--------------------------------
#!usr/local/bin/perl

print "Content-type: text/html\n\n";
print "<html><body>\n";
print "メールを送信しました<hr>";
print "</body></html>\n";
--------------------------------

#!/usr/local/bin/perl

ではないのか、が気になった。
「パールのパス、・・・・・・・・・は確認しました 」
と、書いてあっても、やっぱり気になる。
0064デフォルトの名無しさんNGNG
PerlUnitの使い方について知っている方はぜひ教えてください
0065質問NGNG
全角半角の混じった文字列を、
ブラウザからPOSTやGETで送信されるときと
まったく同じ状態にURLエンコードしたいんだけど、
s/(\W)/'%'.unpack("H2", $1)/ego;を使ったら
%A5%ADじゃなくて%a5%adの様に小文字になってしまうし、
あと半角文字もエンコードされてしまう。
おまえら何かいい方法はありませんか?
0066デフォルトの名無しさんNGNG
>>59はパーミッションを間違っていたことに気付いて帰ったらしい
挨拶くらいしていけ
0067デフォルトの名無しさんNGNG
>>65
別に小文字も大文字も意味は同じじゃねーか、ヴォケ。
いやなら大文字にしろ。
半角文字がエンコードされるなんてあたりめーだろ、氏ね。
仕様書読め、糞
uc EXPR
 EXPR を大文字に変換したものを返します。
0068shigeNGNG
ぷっ
なんと程度の低いスレッドだ。
0069デフォルトの名無しさんNGNG
shige はすっこんでろ。
0070shigeNGNG
なんかいえよ。こら
0071shigeNGNG
生まれてきてごめんなさい
生まれてきてごめんなさい
生まれてきてごめんなさい
生まれてきてごめんなさい
0072shigeNGNG
shige って共通コテハンってほんとですか?
0073デフォルトの名無しさんNGNG
Rubyを貶すときの共通コテハンです
0074デフォルトの名無しさんNGNG
関係ないけどさ、CGI::Liteってつかってる?
url_encode() で改行文字とかをエンコードすると
%0a じゃなくて %a に
なって、それをデコードできないという・・。

なんか思い出したのれす。


007565NGNG
>>67
レスどうも。そうか、ucってすればいいのか。
とりあえず、「意味」が欲しかったわけではなく、
「形」が欲しかったので。

ただ、ブラウザのフォームから送信する場合は、
半角は特別な記号以外はエンコードされないはずだが。
そっちは未解決。
0076デフォルトの名無しさんNGNG
>>65
$noenc_char = '[^A-Za-z0-9.,エンコードシタクナイモジヲスキナダケドウゾ]';
$str =~ s/($noenc_char)/uc unpack 'H2', $1/ego;
007765NGNG
>>67
スマソ、今変換してみたら半角はエンコードされなかった。
まったく
「半角文字がエンコードされるなんてあたりめーだろ、氏ね。 」
だなんて、初心者だと思ってからかうなよ(藁
007865NGNG
>>76
あ、こりゃ便利だ。
今度使わせてもらう。
0079デフォルトの名無しさんNGNG
perl上でz拡張子ファイルをuncompressしたいのですが
やり方を教えてもらえないでしょうか。。。
こういうのに使えるPPMとかってありますか?
0080デフォルトの名無しさんNGNG
gzipを起動させれば?
0081デフォルトの名無しさんNGNG
>>79
system関数で。
0082デフォルトの名無しさんNGNG
拡張子はzね。で、肝心のフォーマットは?
0083デフォルトの名無しさんNGNG
perl使ってメールを送ることってできますか?
0084デフォルトの名無しさんNGNG
できますよ。
0085デフォルトの名無しさんNGNG
perl使ってうんこを送ることってできますか?
0086デフォルトの名無しさんNGNG
shige はすっこんでろ!!
0087デフォルトの名無しさんNGNG
>>86
ワロタ
008879NGNG
79です。

system関数で解凍ソフトのコマンドラインを
実行するように書いたらうまくいきました。
ありがとうございます。

自分の持ってる入門書には
system関数なんて載っていなかったっス。。。



0089デフォルトの名無しさんNGNG
そんな本は窓から投げ捨てとけ。
0090perlでgzipをダイレクトに扱うにはNGNG
テキストをgzipで圧縮してあるファイル(*****.gz)をperlでダイレクトに
アクセスして圧縮解いて文字列処理することってできるんですかね。
やはり一度どこかのテンポラリーに圧縮解凍してからそれを読み込まないと
だめですか?
簡単な方法あったら知りたいのでお願いです。
0091デフォルトの名無しさんNGNG
>>90
Compress::Zlib
0092perlでgzipをダイレクトに扱うにはNGNG
>91

それ使うとfopenでダイレクトにgzファイルをテキストファイルみたい
に扱うことができるの?
どっか使い方のサンプルとか出てるサイトないですかね?
0093デフォルトの名無しさんNGNG
>>92
Compress::ZlibはCライブラリのzlibのPerlインタフェイス。
ファイルハンドルと圧縮ファイルを連結させるにはIO::Zlibってのがある。
入手、ドキュメントはCPANへ。
英語だがガッツがあればそれなりにいける。
http://search.cpan.org/search?dist=Compress-Zlib
http://search.cpan.org/search?dist=IO-Zlib
0094デフォルトの名無しさんNGNG
りんごを英語で何て言うか尋ねるスクリプトを書いたのですが、正解でも不正解でも正解時のコメントが表示されてしまいます。どこがまちがってるか教えていただけないでしょうか?

print "りんごは英語で?: ";
$answer = <STDIN>;
chomp($answer);
if ($answer == apple) {print "ご名答!!\n";}
else {print "ごめんなさいはずれです。\n";}
0095デフォルトの名無しさんNGNG
Unquoted string "apple" may clash with future reserved word

perl -wc hogehoge.pl ってやると文法チェックしてくれるよ。
009694NGNG
ありがとうございました。
009794NGNG
すみません・・・やっぱできませんでした。
直した後チェックしてみたのですが、文法は間違ってなさそうです。
どうしてうまくいかないのでしょうか?
0098デフォルトの名無しさんNGNG
文字列の比較演算子は、
eq(==), gt(>), ge(>=), lt(<), le(<=), cmp(<=>)
になっております。お間違いのないようよろしくお願い致します。
009994NGNG
できました!度々すみませんでした。
なるほど文字列は数列と違うのですね。ありがとうございました。
0100100NGNG
100!!!
0101棄教者 ◆witdLTi2 NGNG
>>98-99
$answer == "apple" とやると、

$answer に入っている文字は空文字列じゃないので「真」を返します。
"apple"は空文字列じゃないので真を返します。
比較演算子 == は
左辺の返り血である「真」と右辺の返り血である「真」を比較して
真を返します。そういうわけです。

試しに$answerに空文字列または0を入れてみて下さい。
つぎに0.0を入れてみて下さい。結果がどうなるかを報告して下さい。
■ このスレッドは過去ログ倉庫に格納されています