Perlについての質問箱 32箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/08/13(月) 18:01:530002デフォルトの名無しさん
2007/08/13(月) 18:12:170003デフォルトの名無しさん
2007/08/13(月) 18:17:120004デフォルトの名無しさん
2007/08/13(月) 18:23:48乙
0005デフォルトの名無しさん
2007/08/13(月) 18:28:500006デフォルトの名無しさん
2007/08/13(月) 18:35:05テンプレ
1. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
0007デフォルトの名無しさん
2007/08/13(月) 18:39:15"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc11.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html
● 2006/12/21現在の最新版: 5.8.8
● 2006/12/21現在の開発版: 5.9.3
前スレ
Perlについての質問箱 30箱目
http://pc11.2ch.net/test/read.cgi/tech/1181500187/
リンク集は>>8-10あたり
過去スレは>>11あたり
0008デフォルトの名無しさん
2007/08/13(月) 18:40:02Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.8/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0009デフォルトの名無しさん
2007/08/13(月) 18:40:42CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0010デフォルトの名無しさん
2007/08/13(月) 18:41:361 ttp://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 ttp://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 ttp://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 ttp://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 ttp://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 ttp://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 ttp://pc2.2ch.net/test/read.cgi/tech/1068051036/
8 ttp://pc2.2ch.net/test/read.cgi/tech/1074151549/
9 ttp://pc5.2ch.net/test/read.cgi/tech/1079114157/
10 ttp://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 ttp://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 ttp://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 ttp://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 ttp://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 ttp://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 ttp://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 ttp://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 ttp://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 ttp://pc8.2ch.net/test/read.cgi/tech/1131286411/
21 ttp://pc8.2ch.net/test/read.cgi/tech/1134327348/
22 ttp://pc8.2ch.net/test/read.cgi/tech/1138519327/
23 ttp://pc8.2ch.net/test/read.cgi/tech/1141742901/
24 ttp://pc8.2ch.net/test/read.cgi/tech/1146022352/
25 ttp://pc8.2ch.net/test/read.cgi/tech/1149259409/
26 ttp://pc8.2ch.net/test/read.cgi/tech/1153412251/
27 ttp://pc8.2ch.net/test/read.cgi/tech/1157874614/
28 ttp://pc8.2ch.net/test/read.cgi/tech/1162273941/
29 ttp://pc11.2ch.net/test/read.cgi/tech/1166708139/
30 ttp://pc11.2ch.net/test/read.cgi/tech/1173880452/
31 ttp://pc11.2ch.net/test/read.cgi/tech/1181500187/
0011デフォルトの名無しさん
2007/08/13(月) 18:43:09-Perlについての質問箱 30箱目
+Perlについての質問箱 31箱目
-リンク集は>>8-10あたり
+リンク集は>>8-9
-過去スレは>>11あたり
+過去スレは>>10あたり
ここまで
0012デフォルトの名無しさん
2007/08/13(月) 19:31:13+
1. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
0013デフォルトの名無しさん
2007/08/13(月) 19:40:532. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
ここまでテンプレ
0014デフォルトの名無しさん
2007/08/13(月) 19:42:340015デフォルトの名無しさん
2007/08/13(月) 19:51:450016デフォルトの名無しさん
2007/08/13(月) 20:17:38じ 演
め
ま
し
た
0017デフォルトの名無しさん
2007/08/14(火) 01:59:172. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
6. こぼれるほどの笑顔
0018デフォルトの名無しさん
2007/08/14(火) 02:39:532. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
それが初心者さ。質問スレに質問して、いったい何が悪いわけ?
自分で読む、自分で調べる、自分で試す、自分で理解する、自分でヤル!
それができれば、たいてい自分で解決してるよ。
そんなヤツが、質問スレに質問すると思うか?
質問されて、答えそのものをズバリ教えちゃうのも問題ありだな。
google の使い方を教えてあげるとか、そういう方法が、質問者にとってもスレにとっても健全な方向に
行き着くと思うな。
あと、質問に答えたくないのにわざわざしゃしゃり出てきて「自分で調べろ」だの何だの言うヤツって
いったい何?結局、そういうヤツって、難しい質問をして欲しくってウズウズしてるだけなんだろ?
ソレって、単なる「構ってクン」じゃないか。質問に答えたくないならスルーしろよ。なぜそれが出来ない?
次にスレを建てるときは、初心者用・中級者用・上級者用にわけるといいね。
そうすれば、初心者の質問を見たくないヤツは見ずに済むからね。
でも多分、わざわざ初心者スレにやってきて、相変わらず「自分で調べろ」って罵倒するバカが必ず現れるよ。
ぜったいに現れる。100ペソ賭けてもいい。
0019デフォルトの名無しさん
2007/08/14(火) 02:42:520020デフォルトの名無しさん
2007/08/14(火) 05:46:01考えたこともないような難しい質問
0021デフォルトの名無しさん
2007/08/14(火) 05:56:10perlの文法的に正しいのか?
教科書みたら英数字しか使えないって書いてあるぞ?
0022デフォルトの名無しさん
2007/08/14(火) 06:14:28文字列の比較演算子
演算子 使用例 式の意味 $a="山", $b="川"の場合の演算結果
eq $a eq $b $aと$bは等しい true
ne $a ne $b $aと$bは等しくない false
これ間違ってるよな?
0023デフォルトの名無しさん
2007/08/14(火) 06:43:31これをUS-aschiiiで見たら
''
こんな風に文字化けしていたので
右矢印を1バイト文字に翻訳したいんだけど、
どうすればいいのかな?
0024デフォルトの名無しさん
2007/08/14(火) 06:56:330025デフォルトの名無しさん
2007/08/14(火) 11:42:15どこの教科書だ?いつの時代の教科書だ?
出版社、書名、発行年月日を晒してミロやw
0026デフォルトの名無しさん
2007/08/14(火) 12:03:17use utf8などをすれば、文法的には正しい。
ttp://www.rwds.net/kuroita/program/Perl_unicode.html#encoding
>>22
間違いだな。それ以前に、$aと$bを使うのは避けるべき。
>>23
US-ASCIIに右矢印はない。utf-8などを使えば表示できるが、1バイトにはならない。
0027デフォルトの名無しさん
2007/08/14(火) 14:04:50低レベルな質問はWebProg板で。
現在も住み分けは出来ているかと思われます。
>>19
質問に答えて貰えなくて悔しかったですか?
難しいのではなく、 >>6 の通りで皆呆れてるのです。
まず、自分の言動に問題は無かったか見直してみましょう。
>>20
過去の例から言って、誰かしらか答えてくれる人間は必ず現れます。
その人間にも相手にされなかったのなら、やはり御自身の行動を見直すべきでしょう。
人のせいばかりにせず、大人として責任を持って発言をしましょう。
0028デフォルトの名無しさん
2007/08/14(火) 14:36:44ゲームのCGIなんで、プレイヤーごとのランキングがあるんですよ。
山田さんは前回は5位でしたが、
今回は順位が上昇して3位になりました↑
とか、
田中さんは前回は2位でしたが、
今回は順位が下降して8位になりました↓
とか
鈴木さんは前回は4位で今回も4位でした→
とか、
順位の移動を表\すのに右矢印、上矢印、下矢印の
記号を2バイト文字の日本語としてつかっちゃってて、
これをアメ公の環境、すなわちUS-asciiとかでみると
当然文字化けしてしまうので、これをなんらかの1バイト文字に
変更しなければならないのですが、どうしましょうかね?
0029デフォルトの名無しさん
2007/08/14(火) 14:48:33'UP' 'DOWN' にするか、画像にすれば?
0030デフォルトの名無しさん
2007/08/14(火) 14:52:38003130
2007/08/14(火) 14:54:13んじゃ ↑ と &darr でいいのかな。
0032デフォルトの名無しさん
2007/08/14(火) 14:55:34日本語が理解できない人間が集まる。
このスレの事ですよ〜〜〜〜w
0033デフォルトの名無しさん
2007/08/14(火) 15:53:460034デフォルトの名無しさん
2007/08/14(火) 15:54:42そのとおりになった
0035デフォルトの名無しさん
2007/08/14(火) 16:07:430036デフォルトの名無しさん
2007/08/14(火) 17:10:52正規表現は飛ばして勉強していいでしょうか?
めんどくさくて、、、
それとも、こういう使い方があるから、ここだけは押さえておけ、というポイントのようなものはありますか?
0037デフォルトの名無しさん
2007/08/14(火) 17:19:52> Perlを勉強中ですが、
> 正規表現は飛ばして勉強していいでしょうか?
いいよ
0038デフォルトの名無しさん
2007/08/14(火) 17:21:47> Perlを勉強中ですが、
> 正規表現は飛ばして勉強していいでしょうか?
よくないよ
0039デフォルトの名無しさん
2007/08/14(火) 17:34:14柊かがみが気に入らないのでかがみんの出るシーンは
飛ばして見ていいでしょうか?
みたいなもんだな。
0040デフォルトの名無しさん
2007/08/14(火) 18:26:330041デフォルトの名無しさん
2007/08/14(火) 18:33:49確かに、Perlは強力な正規表現が特徴、とか言われてるけど、どういう場面で使うことになるのか、見当がつかなくてね
0042デフォルトの名無しさん
2007/08/14(火) 18:47:13壁に当たるまでその道を行きなさい
0043デフォルトの名無しさん
2007/08/14(火) 19:25:38でも、うまくいかない。初心者レスになるがすまん。
これ↓なんだが、使い方がが間違ってるか?
#! /usr/bin/perl
#match.pl
$string =<<EOT
>>042
俺は正規表現が分からない。
EOT
;
print "引用番号: $&" if ($string =~ />>[0-9][0-9][0-9]/);
0044デフォルトの名無しさん
2007/08/14(火) 20:34:28何がどう動かないのか書いてくれ。
あと、動かないことと直接は関係ないけど
$& , $' , $` はなるだけ使わない習慣を付けておいた方が良いと思うよ。
0045デフォルトの名無しさん
2007/08/14(火) 20:42:280046デフォルトの名無しさん
2007/08/15(水) 00:30:38そうか、今使ってるiBookのターミナルはUNIX始めたばっかの頃に弄りまくってたから変なのかもしれない
さっきのプログラムも、何も出力されずに終わってしまうから
あとで、別ので試してみる。
0047デフォルトの名無しさん
2007/08/15(水) 01:09:18「解決策その1」
up downにする、ってのは
自分でも思いつきました。
でも日本語版では視覚的に
一目見てわかるように設計されていたものが
多言語に移動したら説明的になってしまった、
というのはちょっとくやしくて。
「解決策その2」
画像も自分で思いつきました。でも
画像を作って、サイズを合わせて加工して
画像を表示するようにコードを書き換えて、
というのがめんどいなと。
>>30-31
実体参照、すごいですね
まったく思いつきませんでした、
アメ公の環境でもちゃんと表示されるのかな?
&と;セミコロンの表示の問題は
¥エスケープすればノープロブレム?
あなたはすごいので、次からも教えてもらえませんか?
0048デフォルトの名無しさん
2007/08/15(水) 02:19:23「perlはスクリプト言語なので
他人の書いたスクリプトが読める」
という記述があったのですが、
他人が運営している、
CGIのソースは通常、
見れないですよね?
0049デフォルトの名無しさん
2007/08/15(水) 02:27:40定型の設定がされてれば見えない。
しかしあなたの質問は、教科書の”読める”と全く別の外した質問をしている。
0050デフォルトの名無しさん
2007/08/15(水) 02:51:03$rankupdown=$rankupdown==0 ? "→": $rankupdown<0 ? "↓".(-$rankupdown) : "↑".$rankupdown;
今、ソースがこのような状態なのですが、この中の、
"ダブルクオーテーションで囲まれた、→2バイト文字の右矢印を、
実体参照を用いた、&rarr;に変更しようとおもいます。
ぱっとみでやばそうなところは、
&アンパサンドと、;、セミコロンの2つですが、
これらはダブルクオーテーションの中で使うなら、
おそらく¥バックスラッシュを使ってエスケープすれば
いいんだとおもいます。
でも本当にそれでいいのかよくわからんし、
確認するにも本を45冊ほど読まねばならないしで、
もう一つの選択肢である、’シングルクオーテーションではさむ、
という方法を使いたいと思います。
なぜなら、’シングルクオーテーションならば、
はさまれた間にかかれたものは解釈されない?
でそのまんま出力されると教科書に書いてあるので
そっちのほうが実体参照を使うときには適していると
思ったからです。
なので変更後のソースは
$rankupdown=$rankupdown==0 ? '&rarr;' $rankupdown<0 ? "↓".(-$rankupdown) : "↑".$rankupdown;
等となりますが、この考え方であってますでしょうか?
ちなみに実体参照をちゃんと表示させるために
この書き込みは&と;を全角で打ってます
0051デフォルトの名無しさん
2007/08/15(水) 07:21:102. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
>>50は荒らしなので以後スルーします。
0052デフォルトの名無しさん
2007/08/15(水) 08:12:43何で自分で試さないのか。
0053デフォルトの名無しさん
2007/08/15(水) 10:39:57perl -e 'print qq/$&/ if q/>>043/ =~ m/>>[0-9][0-9][0-9]/;'
と
perl -e 'print qq/$&\n/ if q/>>043/ =~ m/>>[0-9][0-9][0-9]/;'
を比較してみるのも一興かと。
0054デフォルトの名無しさん
2007/08/15(水) 13:43:39iMacじゃ、普通に動いたわ
あと、$&は使わない方が良いんだね。教えてくれてありがとう。そんなこと本には書いてないからな〜
0055デフォルトの名無しさん
2007/08/15(水) 16:42:35正規表現で、マッチ文字列、その前、後の文字列は、$&とかじゃなかったら、何で取り出せばいいの?
ググったが見つからなかった。
0056デフォルトの名無しさん
2007/08/15(水) 18:18:36つ perldoc perlre
そういったものが本当に必要なら、迷わず $` $& $' を使うのも正しい選択。
あるいは、正規表現で m/^(.*?)(パターン)(.*)$/ 等を使う選択もある。
あまり良い方法とは思えないが、split /パターン/,$str,2; でも可能。
# ($pre,$post) = split /パターン/,$str,2;
# $match = substr($var,length($pre),-length($post));
一応、 ($pre,$match,$post) = split /(パターン)/,$str,2; でも動くが、
split のパターン中でキャプチャーさせるのが仕様的に正しいかどうかは未確認。
0057デフォルトの名無しさん
2007/08/15(水) 18:31:58$& , $' , $` はなるだけ使わない習慣を付けておいた方が良い理由が
わかりませんでした。
0058デフォルトの名無しさん
2007/08/15(水) 18:33:37>一応、 ($pre,$match,$post) = split /(パターン)/,$str,2; でも動くが、
仕様的に正しいよ。perldoc -f split にきちんと解説がある。
0059デフォルトの名無しさん
2007/08/15(水) 18:43:13ありがとう。正規表現始めたばっかりの俺には、何をやってるのかまだよく分からないが、メモっとくよ。
分かるようになった頃に見直してみる。
0060デフォルトの名無しさん
2007/08/15(水) 18:47:14俺も全然わからん
$1とか使うぐらいならリストにキャプチャしろってんならまだ分かるが
m//gでiterativeに検索するような場合には
リストコンテキストにするわけにはいかんし
0061デフォルトの名無しさん
2007/08/15(水) 18:53:20> perlreやgoogleで調べてはみたのですが
> $& , $' , $` はなるだけ使わない習慣を付けておいた方が良い理由が
> わかりませんでした。
see perlvar
0062デフォルトの名無しさん
2007/08/15(水) 18:55:22どうでもいいな
0063デフォルトの名無しさん
2007/08/15(水) 19:37:42むしろ使わないほうがいいようにもみえるのですが気のせいでしょうか?
> Due to an unfortunate accident of Perl's implementation, "use English"
> imposes a considerable performance penalty on all regular expression
> matches in a program, regardless of whether they occur in the scope of
> "use English".
0064デフォルトの名無しさん
2007/08/15(水) 20:04:14URLをマッチさせるにはこんな感じだね
/http(¥w|¥.|¥/|:|?|&|%)+/
0065デフォルトの名無しさん
2007/08/15(水) 20:06:07あっ、エスケープしてなかった。
/http(¥w|¥.|¥/|:|¥?|¥&|¥%)+/
0066デフォルトの名無しさん
2007/08/15(水) 20:13:23もうちょっとよく読みなよ。
perlre も perlvar も $&検索したらすぐ理由書いてあるところみつかる。
http://www.google.com/search?q=perlre+%22Once+Perl+sees+that%22
http://www.google.com/search?q=perlvar+%22The+use+of+this+variable%22
0067デフォルトの名無しさん
2007/08/15(水) 20:52:55--
プログラム中にひとつでも$&, $`, $'があると
全てのパターンマッチでそれらを提供しないといけなくなるから
大幅に遅くなるかもしれません。
--
って感じですかね?
どの正規表現での$&, $`, $'を取りたいのか実行してみるまでわからないから
全正規表現で提供する必要がでてきちゃうんですね。
localとかmyで範囲の指定できて最適化されればいいのにね。
0068デフォルトの名無しさん
2007/08/15(水) 21:10:39なんか、誰かさんと違って、感じが良くて教え甲斐のありそうなヤツだな。
オレだったらこう書く
print "引用番号: $1" if ($string =~ /(>>[0-9][0-9][0-9])/);
それ以外にも、
$string =~ /^(.*)(>>[0-9][0-9][0-9])(.*)$/);
と()で囲めば $` $& $' のかわりに $1,$2,$3 を使える。
オレは必要だと思ったらとにかく()で囲む。
他の人がどうだかは知らないけど。
0069デフォルトの名無しさん
2007/08/15(水) 21:40:41use strict;
use warnings;
use utf8;
my $string = q(
>>068
親切な人だと思うけど$1と$3に値が入りません。
ちなみにCentOS 4.5標準のperl 5.8.5です。
);
printf "%s='%s'\n",'string',$string;
if( $string =~ /^(.*)(>>[0-9][0-9][0-9])(.*)$/m ){
printf "%d='%s'\n-----\n",1,$1;#空
printf "%d='%s'\n-----\n",2,$2;#>>068
printf "%d='%s'\n-----\n",3,$3;#空
printf "%s='%s'\n-----\n",'$`',$`;#改行
printf "%s='%s'\n-----\n",'$&',$&;#>>068
printf "%s='%s'\n-----\n",'$\'',$';#残りの部分
}
007068
2007/08/15(水) 22:10:32ドット「.」は改行文字にはマッチしないので、文字列中に改行があって、ドット「.」
でマッチさせたかったら $string=~//s を使う。
ちょっと甘やかし気味かもしれんが、すぐに自分で実践する態度がよいので
答えてあげたくなってしまう。
0071デフォルトの名無しさん
2007/08/15(水) 22:17:42use warnings;
use utf8;
ときちんと書いてて、q() でクォートしてる。
初心者とは思えないぐらい立派な心がけだ。
でも次からはuse strict とかは省略して、必要な部分だけでいいよ。
0072デフォルトの名無しさん
2007/08/15(水) 22:29:040073デフォルトの名無しさん
2007/08/16(木) 03:38:36自分で歩こうとしないのでゴミ箱に捨ててやった
0074デフォルトの名無しさん
2007/08/16(木) 03:52:31本気で言ってるなら出頭しろ。
0075デフォルトの名無しさん
2007/08/16(木) 03:53:165.6あたりで増えた特殊変数 @+ と @- を使えば、$&, $`, $' に対応した
部分文字列を取れるよ。
んでペナルティもなし。
ただし substr使わんと部分文字列としては取得できんが。
0076デフォルトの名無しさん
2007/08/16(木) 05:09:12”ダブルクオーテーションまたは
’シングルクオーテーションで
はさまれた中でつかってもだいじょうぶ?
"$"
'$'
こんなかんじで。
0077デフォルトの名無しさん
2007/08/16(木) 05:09:570078デフォルトの名無しさん
2007/08/16(木) 08:15:462. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
>>76は荒らしなので以後スルーします。
0079デフォルトの名無しさん
2007/08/16(木) 09:54:180080デフォルトの名無しさん
2007/08/16(木) 10:24:59"$" -> Compile error
0081デフォルトの名無しさん
2007/08/16(木) 11:06:45「あなたの書き込みは、以降無視します」と
20回以上言っていた人物が抽出され気味悪がられていたこと
がある。
0082デフォルトの名無しさん
2007/08/16(木) 11:17:31一番の近道だと思うよ。
0083デフォルトの名無しさん
2007/08/16(木) 12:33:29ヒントだけ示して、
1. 嫁
2. ググれ
3. 確認汁
4. 分かれよ
5. 自分でやれ
って答えてればいいんじゃない。
0084デフォルトの名無しさん
2007/08/16(木) 12:39:38とか言い出すから触らないのが一番。
0085デフォルトの名無しさん
2007/08/16(木) 12:41:481: 自分はこういう事がしたい。
2: それでこんな風にやってみたが…
3: こんなエラーが出て上手く行かなかった。
基本的にこの3つが揃ってないと"質問"でさえ無い。
008676
2007/08/16(木) 13:16:040087デフォルトの名無しさん
2007/08/16(木) 13:24:56大変勉強になりました。ありがとうございました。
>>70 もっときれいで効率の良い書き方がありそうな気もしますが無事処理できるようになりました。
>>71 ありがとうございます。でもbinmodeを忘れていてwarningがでてました(汗
>>75
今回の前と後ろをキャプチャーする方法のように正規表現が複雑になったり
オフセットが入っているだけなので取り出す処理が必要だったりと
正規表現全体の効率を落とすよりはよさそうですが
もっと自然に取れる方法があるといいなぁと思いました。
);
while( $string =~ /^(.*?)(>>(\d+))(.*)$/s ){
$string = $4;
printf "引用番号:%d\n",$3;
my($value,$next) = ( $string =~ /^(.*?)(?=>>\d+)(.*)$/s ) ? ($1,$2) : ($string,'');
$value =~ s/^(\r?\n|\s)//go; $value =~ s/(\r?\n|\s)$//go; $value =~ s/\r?\n/<br>/go;
printf "返信内容:'%s'\n",$value;
print "-----\n";
$string = $next;
}
0088デフォルトの名無しさん
2007/08/16(木) 14:39:130089デフォルトの名無しさん
2007/08/16(木) 15:16:15$string = '>>42
俺は正規表現が分からない。
>>1 本屋に逝けば腐るほど解説書が売ってるし、
ググればタダで勉強できるぞタコヤロウ!
';
while ((undef, $anchor, $string) = ($string =~ m/^(.*?)>>(\d+)(.*)$/s)) {
print "引用番号:",$anchor,"\n";
($value, $string) = ($string =~ m/^(.*?)(>>\d+.*)$/s) ? ($1,$2) : ($string, '');
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$value =~ s/\r?\n/<br>/g;
printf "返信内容:'%s'\n",$value;
print "-----\n";
}
2ちゃんねるでカキコミすると、ソースコードの字下げが全部無効になるから見づらいよな。
2ちゃんねるはプログラミングの話題には向かないよね。
0090デフォルトの名無しさん
2007/08/16(木) 15:21:370091デフォルトの名無しさん
2007/08/16(木) 15:21:44($value, $string) = ($string =~ m/^(.*?)(>>\d+.*)$/s) ? ($1,$2) : ($string, '');
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$value =~ s/\r?\n/<br>/g;
print "引用番号:",$anchor,"\n";
print "返信内容:'",$value,"'\n";
print "-----\n";
}
おっと、print 文を1箇所にまとめたほうが美しいかな。
0092デフォルトの名無しさん
2007/08/16(木) 17:23:380093デフォルトの名無しさん
2007/08/16(木) 17:37:257桁の数字(日付)20070816を2007/08/16のようにスラッシュで区切って
表示する方法がわかりません。どうかご教授下さい。
0094デフォルトの名無しさん
2007/08/16(木) 17:52:090095デフォルトの名無しさん
2007/08/16(木) 18:16:42それはおかしい
0096デフォルトの名無しさん
2007/08/16(木) 18:19:288桁でした…
0097デフォルトの名無しさん
2007/08/16(木) 19:33:40#!/usr/bin/perl
use Time::Local;
$date = "20070816";
$ut = timelocal(0x0, 0x0, 0x0,
int(substr($date, 6e0, 0_2)),
int(substr($date, 4e0, 0_2) - 0001),
int(substr($date, 0e0, 0_4)) - 0x76c);
@lt = localtime $ut;
for (0..2) { pop @lt }
syswrite(STDOUT, sprintf("%04d/%02d/%02d",
pop(@lt) + 03554, pop(@lt) + 1, pop @lt));
0098デフォルトの名無しさん
2007/08/16(木) 19:43:55#!/usr/bin/perl
$date = "20070816";
use Time::Local;
$ut = timelocal(0x0, 0x0, 0x0,
abs int(substr($date, 6e0, 0_2)),
abs int(substr($date, 4e0, 0_2) - 0001),
abs int(substr($date, 0e0, 0_4)) - 0x76c);
@lt = localtime $ut; for (0..2) { pop @lt }
syswrite(STDOUT, sprintf(qq$%04d\x2f%02d\x2f%02d$,
pop(@lt) + 03554, pop(@lt) + 1, pop @lt));
__END__
0099デフォルトの名無しさん
2007/08/16(木) 20:18:32printf "%s/%s/%s", $date =~ /(\d{4})(\d{2})(\d{2})/;
0100デフォルトの名無しさん
2007/08/16(木) 20:27:37#!/usr/bin/perl
tie my @array,"Fuga::Fuga";
tie my %hash,"Fuga::Fuga";
print "$array[20070816]\n";
print "$hash{20070830}\n";
{
package Fuga::Fuga;
sub TIEARRAY { my $dummy; bless \$dummy,$_[0]; }
sub TIEHASH { my $dummy; bless \$dummy,$_[0]; }
sub FETCH { local($",undef,$a)=('/',@_);"@{[unpack 'A4A2A2',substr('0'x8 .$a,-8)]}" }
sub STORE { undef }
sub DELETE { undef }
sub CLEAR { undef }
sub EXISTS { 1 }
sub FIRSTKEY { $$_[0] = 0 }
sub NEXTKEY { $$_[0]<99999999 ? ++$$_[0] : undef }
sub STORESIZE { $$_[0]=$_[1];}
sub FETCHSIZE { $$_[0]; }
}
0101デフォルトの名無しさん
2007/08/16(木) 20:28:13■ このスレッドは過去ログ倉庫に格納されています