Perlについての質問箱 47箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/05/25(水) 23:18:12.33CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。
http://www.perl.org/get.html
● 2011/05/25 現在の最新版: 5.14.0
▼ 前スレ
Perlについての質問箱 46箱目
http://hibari.2ch.net/test/read.cgi/tech/1297677532/
リンク集は >>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは >>5-7 あたり
0002デフォルトの名無しさん
2011/05/25(水) 23:18:52.40Perl プログラミング講座: ttp://www.site-cooler.com/kwl/perl/
[本]
リャマ: ttp://www.oreilly.co.jp/books/9784873114279/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://ascii.asciimw.jp/books/books/detail/4-7561-3057-7.shtml
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/
[オンラインマニュアル]
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perldoc.jp: ttp://www.perldoc.jp/
perldoc.perl.org: ttp://perldoc.perl.org/
0003デフォルトの名無しさん
2011/05/25(水) 23:19:02.02CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perl メモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perl のページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perl の小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl 5.8 Unicodeメモ]
ttp://www.rwds.net/kuroita/program/Perl_unicode.html (修正)
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004デフォルトの名無しさん
2011/05/25(水) 23:19:12.89# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1. の行を入れると、DOS 窓への日本語出力は簡便になりますが、
# ソースファイル名に非 ANSI 文字が含まれる場合に die 文の出力が失敗します。
# ※2. OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、
# この例のように cp932 でエンコードする必要があります。
0005デフォルトの名無しさん
2011/05/25(水) 23:19:21.981 http://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 http://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 http://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 http://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 http://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 http://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 http://pc2.2ch.net/test/read.cgi/tech/1068051036/ (事故により消滅)
8 http://pc2.2ch.net/test/read.cgi/tech/1074151549/ (事故により消滅)
9 http://pc5.2ch.net/test/read.cgi/tech/1079114157/
10 http://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 http://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 http://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 http://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 http://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 http://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 http://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 http://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 http://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 http://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 http://pc8.2ch.net/test/read.cgi/tech/1131286411/
0006デフォルトの名無しさん
2011/05/25(水) 23:19:28.3021 http://pc8.2ch.net/test/read.cgi/tech/1134327348/
22 http://pc8.2ch.net/test/read.cgi/tech/1138519327/
23 http://pc8.2ch.net/test/read.cgi/tech/1141742901/
24 http://pc8.2ch.net/test/read.cgi/tech/1146022352/
25 http://pc8.2ch.net/test/read.cgi/tech/1149259409/
26 http://pc8.2ch.net/test/read.cgi/tech/1153412251/
27 http://pc8.2ch.net/test/read.cgi/tech/1157874614/
28 http://pc8.2ch.net/test/read.cgi/tech/1162273941/
29 http://pc11.2ch.net/test/read.cgi/tech/1166708139/
30 http://pc11.2ch.net/test/read.cgi/tech/1173880452/
31 http://pc11.2ch.net/test/read.cgi/tech/1181500187/
32 http://pc11.2ch.net/test/read.cgi/tech/1186995713/
33 http://pc11.2ch.net/test/read.cgi/tech/1192463997/
34 http://pc11.2ch.net/test/read.cgi/tech/1199977642/
35 http://pc11.2ch.net/test/read.cgi/tech/1208674881/
36 http://pc11.2ch.net/test/read.cgi/tech/1215569470/
37 http://pc11.2ch.net/test/read.cgi/tech/1218449440/
38 http://pc11.2ch.net/test/read.cgi/tech/1221967332/
39 http://pc12.2ch.net/test/read.cgi/tech/1234181856/
40 http://pc12.2ch.net/test/read.cgi/tech/1243631674/
0007デフォルトの名無しさん
2011/05/25(水) 23:19:36.2841 http://pc12.2ch.net/test/read.cgi/tech/1249581780/
42 http://pc12.2ch.net/test/read.cgi/tech/1257139591/
43 http://pc12.2ch.net/test/read.cgi/tech/1266565626/
44 http://hibari.2ch.net/test/read.cgi/tech/1280541200/
45 http://hibari.2ch.net/test/read.cgi/tech/1287755129/
46 http://hibari.2ch.net/test/read.cgi/tech/1297677532/
0008デフォルトの名無しさん
2011/05/25(水) 23:21:56.41テンプレなげーよ。
0009デフォルトの名無しさん
2011/05/26(木) 02:10:26.60binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
が
use encoding "cp932";
でも、いいような気がしるけど、いまいち理解できてないです…
0010デフォルトの名無しさん
2011/05/26(木) 02:38:46.950011デフォルトの名無しさん
2011/05/26(木) 06:36:42.24全然ダメ
0012デフォルトの名無しさん
2011/05/26(木) 12:40:27.81kwsk
0013デフォルトの名無しさん
2011/05/26(木) 13:14:43.30いけなくなるのが余計ってことなんじゃ。
00149
2011/05/26(木) 13:15:44.46とりあえず、最初は
use utf8;
use encoding "cp932";
use open IO => ":encoding(cp932)";
binmode STDERR, ":encoding(cp932)";
こんな感じで、UTF-8形式でソース保存しています。
あ…ファイル名に全角文字だとさらにややこしくなるんですね… orz
00159
2011/05/26(木) 13:17:59.160016デフォルトの名無しさん
2011/05/26(木) 14:19:17.56ソースを utf8 で保存しれりゃ別にえぇんとちゃうのん?と思う。
文字数を数えたいなら decode してフラグ付けりゃいいだけだしさ。
0017デフォルトの名無しさん
2011/05/26(木) 14:33:53.730018デフォルトの名無しさん
2011/05/26(木) 15:11:12.92テンプレが長いのは過去スレが多いからだが、過去スレはやめても
いいんじゃない?
他のスレでも、省略しているものが多いみたいだし。
0019デフォルトの名無しさん
2011/05/26(木) 17:37:42.78例えば<font size="6">www</font>"aaa"<font color="#0000ff">www</font>"bbb"という文字列の
タグの中の"を'にタグ外の"は&quot;に変換して
<font size='6'>www</font>&quot;aaa&quot;<font color='#0000ff'>www</font>&quot;bbb&quot;というようにするには
どうしたらいいんでしょうか?
0020デフォルトの名無しさん
2011/05/26(木) 18:19:43.27そんなこと聞いてるやつがインジェクション攻撃に
対処できると思わないからタグ自体禁止する。
0021デフォルトの名無しさん
2011/05/26(木) 18:44:50.030022デフォルトの名無しさん
2011/05/26(木) 18:50:12.181.行全部のクォートを"にする
2.タグの中の"を'に変換する
3.SQLなどへのインジェクションで泣きを見る
4.あなたは晴れて失業
5.perl忍者が増える
0023デフォルトの名無しさん
2011/05/26(木) 21:40:54.68ハッシュ変数wordに$word{"テスト"}="だよ";
のような感じで値を渡しているのですが
いざif文で if ($word{$a} == "だよ")で判別しようとすると
$aがどんな値でも上記の条件式が必ず実行されてしまいます。
意味不明だと思いますがエスパーの方いましたらよろしくお願いします。
0024デフォルトの名無しさん
2011/05/26(木) 22:03:53.54文字列比較には==ではなくeqを使え
0025デフォルトの名無しさん
2011/05/26(木) 22:33:22.35!= ne
常識
0026デフォルトの名無しさん
2011/05/26(木) 22:42:03.07無事解決しました!
なるほど文字列の比較の仕方が間違ってたんですね。
どうもありがとうございました。
0027デフォルトの名無しさん
2011/05/26(木) 23:01:20.86タグの外ってことは > と < にはさまれてるって考えれば良いかと
0028デフォルトの名無しさん
2011/05/26(木) 23:10:34.54<img/>とか<br/>はどうすんの
0029デフォルトの名無しさん
2011/05/26(木) 23:30:08.44> use utf8;
> use encoding "cp932";
両方同時に使うのは間違い
ttp://perldoc.jp/docs/perl/5.8.1/utf8.pod
ttp://blog.livedoor.jp/dankogai/archives/51221731.html
0030デフォルトの名無しさん
2011/05/27(金) 03:45:12.00それは置いといて、encodingを使うと、
binmode STDIN => ":raw :encoding(cp932)";
binmode STDOUT => ":raw :encoding(cp932)";
こうなって、"\n"の挙動が変わるから注意は必要だね。
0031デフォルトの名無しさん
2011/05/27(金) 08:24:04.59use utf8;
use open qw(:encoding(cp932) :std);
0032デフォルトの名無しさん
2011/05/27(金) 10:32:06.73>フォームから入力されたデータ
この意味がよくわかんないんだけど、単なる文字列の変換なら
my $str = '<font size="6">www</font>"aaa"<font color="#0000ff">www</font>"bbb"';
$str =~ s/(<[^>]*?)"(.*?)"/\1'\2'/g;
$str =~ s/"/&quot;/g;
0033デフォルトの名無しさん
2011/05/27(金) 13:05:02.520 から 1 までの範囲の RGBA の配列に変換してくれるモジュールには
どういったのがあるのでしょうか?
サブルーチンを自分で書いた方が早い気がしますが、
CPAN にあるのならそれを使った方が良いかなあ?と思って
0034デフォルトの名無しさん
2011/05/27(金) 13:25:00.08改行を含む任意の1文字はどう表現すればいいですか?
0035デフォルトの名無しさん
2011/05/27(金) 13:39:48.57s修飾子を使うか | で並べる
/./s
/.|¥n/
お好きな方で。
0036デフォルトの名無しさん
2011/05/27(金) 14:42:25.83よく解らなかったので検索したら、たとえば
binmode STDOUT => ":crlf:encoding(cp932)";
という指定で大丈夫でしょうか?
0037デフォルトの名無しさん
2011/05/27(金) 17:58:40.36礼儀正しくやるならそうなるね。
面倒ならSTDINだけ:crlfを追加とか。
binmode STDIN => ":crlf";
0038デフォルトの名無しさん
2011/05/27(金) 18:52:12.71{}の中のaaaをAAAにしたいんですけど
$str=~s/{aaa}/AAA/g;としてもうまくいきません
どうすればうまくいくんでしょうか?
0039デフォルトの名無しさん
2011/05/27(金) 19:03:27.46やめたほうがいいといわれたのでやめます
0040デフォルトの名無しさん
2011/05/27(金) 19:23:35.56$str="aaa{aaa}aaa{aaa}";
なら $str=~s/{aaa}/AAA/g;でうまくいくよ。
0041デフォルトの名無しさん
2011/05/27(金) 22:48:57.57CPANにUPすると容赦なくdisられるのな…。
0042デフォルトの名無しさん
2011/05/27(金) 23:22:45.70#!C:/Perl/bin/perl
require 'cgi-lib.pl';
require 'jcode.pl';
print "Content-type: text/html\n";
print "\n";
%form = &read_input('euc');
$name= $form['name'];
print "$name";
これでなんで何も表示されないのか全くわからん。
ディレクトリ内の「cgi-lib.pl」の名前を変えてみたところサーバーエラーになったらから、
「cgi-lib.pl」の読み込みはちゃんとできていたということになるんだけど。
0043デフォルトの名無しさん
2011/05/27(金) 23:24:08.08これなに
0044デフォルトの名無しさん
2011/05/27(金) 23:27:48.260045デフォルトの名無しさん
2011/05/27(金) 23:37:14.620046デフォルトの名無しさん
2011/05/27(金) 23:49:49.21{} ハッシュパピー
0047デフォルトの名無しさん
2011/05/27(金) 23:56:18.76よーし治……らない! なぜ。
0048デフォルトの名無しさん
2011/05/27(金) 23:59:50.550049デフォルトの名無しさん
2011/05/28(土) 00:00:50.35した結果はどうなる?
0050デフォルトの名無しさん
2011/05/28(土) 00:07:35.230051デフォルトの名無しさん
2011/05/28(土) 00:10:44.02ジャッジメントですの!
0052デフォルトの名無しさん
2011/05/28(土) 00:19:17.65というか
http://www.tiu.ac.jp/~nakabasa/Internet/CGI/cgi4.html
このページの下のほうを参考にしたんで、負ける気がしない!
0053デフォルトの名無しさん
2011/05/28(土) 00:24:03.090054デフォルトの名無しさん
2011/05/28(土) 00:24:44.84use CGI;
my $form = CGI->new;
print $form->param('name');
0055デフォルトの名無しさん
2011/05/28(土) 00:32:24.33もう1度検討を重ねてから出直してきます。
0056デフォルトの名無しさん
2011/05/28(土) 01:20:02.710057デフォルトの名無しさん
2011/05/28(土) 01:28:18.81&read_input('euc');
をやめて
&ReadParse;
にしたらできた。ていうかcgi-lib.plに「read_input」なんて文字列自体存在しなかったぞ。どうなってんだ^o^
0058デフォルトの名無しさん
2011/05/28(土) 02:33:27.610059デフォルトの名無しさん
2011/05/28(土) 05:41:01.870060デフォルトの名無しさん
2011/05/28(土) 07:12:47.44use CGI ':cgi-lib';
%form = Vars;
0061デフォルトの名無しさん
2011/05/28(土) 12:29:11.06でもすでに手作業で移行しますた
0062デフォルトの名無しさん
2011/05/29(日) 03:13:18.36> でもすでに手作業で移行しますた
なってねえな〜「でもすでに」じゃねーだろ
そういう時はウソでも「参考になりました」とか「もっと精進します」とか書いとけよ
0063デフォルトの名無しさん
2011/05/29(日) 03:23:49.620064デフォルトの名無しさん
2011/05/29(日) 04:26:29.99日本語でおk
0065デフォルトの名無しさん
2011/05/30(月) 11:26:36.12Running install for module 'Gtk2'
Running make for F/FL/FLORA/Gtk2-1.223.tar.gz
Has already been unwrapped into directory C:\strawberry\cpan\build\Gtk2-1.223-C10W1L
'C:\strawberry\perl\bin\perl.exe Makefile.PL' returned status 512, won't make
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
なんかこうなるようになっちゃったんですけど
最初からやり直すにはどうしたらいいんざましょ?
0066デフォルトの名無しさん
2011/05/30(月) 13:26:37.32エラーメッセージで
「Gtk2-1.223.tar.gz は C:\strawberry\cpan\build\Gtk2-1.223-C10W1L にもう展開してあるよ!」って言ってるんだから
コマンドプロンプトで C:\strawberry\cpan\build\Gtk2-1.223-C10W1L に移動して、
make
make test
make install
で良いんじゃないの?
0067デフォルトの名無しさん
2011/05/30(月) 14:15:45.270068デフォルトの名無しさん
2011/05/30(月) 21:53:49.88}
この<>はなんですか?
0069デフォルトの名無しさん
2011/05/30(月) 22:06:24.93@ARGVに設定された引数のファイル名の内容を順に1行読むか、引数がない場合は標準入力から読む 、という指定。
I/O Operators in perldoc perlop
0070デフォルトの名無しさん
2011/05/30(月) 22:10:13.37山カッコ演算子。
ダイヤモンド演算子とも呼ばれる。
0071デフォルトの名無しさん
2011/05/30(月) 22:10:56.310073デフォルトの名無しさん
2011/05/30(月) 22:40:02.95ありがとうございます。検索しても記号だと見つからないようなので助かりました。
0074デフォルトの名無しさん
2011/05/30(月) 22:43:00.980075デフォルトの名無しさん
2011/05/31(火) 09:24:40.69暇な人に対するアホな質問です。
昔自分で作った記述ですが、昔すぎて作ってた時の記憶が出てきません。
特定のケースで不備が出る場合とか、そうゆうのを思いついたら教えてください。
処理の目的はどんな文字でも一緒に混ぜても大丈夫、みたいな感じです。
たぶん一般的な通信のヘッダーとかの分解にも使えたような気がします。
sub Separator_join ($$;@) {
my $separat = shift or return();
my $enclose = shift or return();
my @entity = @_ or return();
$separat ne $enclose or return();
map {s/($separat+)/$separat$1/go} @entity;
return( join qq[$enclose$separat$enclose], @entity );
}
#▼Separator_joinで生成されたスカラーに対し、安全にセパレータで分割してリストを返す
sub Separator_split ($$$) {
my ($separat, $enclose, $all) = @_;
my @entity = split /$enclose$separat$enclose/, $all;
map{s/$separat(?!$separat)//go} @entity;
return(@entity);
0076デフォルトの名無しさん
2011/05/31(火) 10:25:46.36007775
2011/05/31(火) 13:01:56.41ありがとうございます。Perlだったか!という感じです。
アルゴリズム的な問題とか、想定範囲の抜け目とか、その変もお願いします。
おかしな事が起きない確証(?)って言うか確信みたいなのが欲しい感じです。
メモリが足りない場合……とか、そうゆう関数に直接関係ないのはいいですけど。
別に暇な人でいいんで、お願いします。
曖昧な記憶ではメールの仕様と同じだったと思うんで、
どんな内容でもデータは壊れないし復元できると信じたい想いなんですが。
0078デフォルトの名無しさん
2011/05/31(火) 13:19:05.51>>4のやり方で、MechanizeでShift_JISのページを取得してファイルに出力したところ、
�@�U�пァが
\x{fffd}@\x{fffd}K\x{fffd}Z〒に
なってました。
0079デフォルトの名無しさん
2011/05/31(火) 13:21:12.040080デフォルトの名無しさん
2011/05/31(火) 13:31:09.93起こりそうとか、メタキャラクタのエスケープしてないぞとか
s///o使ってるので$separatや$encloseを違う文字列で呼んだら
おかしくなりそうとかその辺が突っ込みどころかなぁ。
ちゃんと仕様を残しましょうww
0081デフォルトの名無しさん
2011/05/31(火) 13:47:15.14008275
2011/05/31(火) 15:33:04.61>$separatと同じ文字が$encloseに混じってたりすると嫌なことが
>起こりそうと
考えてみた結果、
$separat = q(/);
$enclose = q(_/);
@entity = (q(_/_/));
これで見事におかしくなる予感がしました。
こんな引数使う馬鹿誰だよ、って少し思いますけど。
一文字限定とか仕様変えてもいいんですが、既存のどっかにバグが出たら嫌なので
重複文字列の全チェック関数を作ります。無駄に重たくなりそうだけど…。
>メタキャラクタのエスケープしてない
仰るとおりです。
>s///o使ってるので$separatや$encloseを違う文字列で呼んだら
>おかしくなりそうとかその辺が突っ込みどころかなぁ。
あれ、関数を再度呼んだらoは初期化されないんですか?
ループの中だけで有効で、スコープ抜けたら初期化される物と勝手に思ってました。
すみません検索してきます。
0083デフォルトの名無しさん
2011/05/31(火) 19:44:13.28decode('cp932',$cp932_char);
decode('utf8',$utf8_char);
とかやってから処理すればいいんですかね?
なんだかどれがどれと一緒なのかわからなくなっとります
0084デフォルトの名無しさん
2011/06/01(水) 15:03:51.07きもちわる
0085デフォルトの名無しさん
2011/06/01(水) 15:57:02.300086デフォルトの名無しさん
2011/06/01(水) 17:39:27.81Mechanizeが悪かったこの野郎!
勝手にデコードしやがって!
寝る
0087デフォルトの名無しさん
2011/06/01(水) 22:32:35.23new{
$obj = {'is_error' => 0};
bless $obj, $pkg;
return $obj;
}
my $test = TEST->new();
if($test->{'is_error'}){〜}
みたいに一々書く必要は無いですよね?(サンプル自体が分かりにくいかもしれませんが・・・^-^;)
0088デフォルトの名無しさん
2011/06/01(水) 23:33:59.13むしろ$test->{is_error}でハッシュを参照するのがよろしくない
0089デフォルトの名無しさん
2011/06/02(木) 00:01:01.82new() or die みたいな書き方を書かれてるってことは、new でエラーを返したい場合は undef を返しても OK という事ですよね?
009082
2011/06/02(木) 00:44:32.99sub test_1{
my $test = $_[0];
my $test2 = 'aabb';
{ $test2 =~ s/$test//og }
print "$test2\n";
}
&test_1("a");
&test_1("b");
いったいこの o の仕様はどうゆうこと。
スコープ抜けてもoは継続されるわ、
myの変数だからサブルーチン呼んだら新しい変数になってるハズなのに、oがそのまま記憶されてるわ、
なんですかこの仕様。
サブルーチンで o 使えないじゃないですか。
Perl作った人は何考えてるんですか。
なんかoを「ここでoを初期化させる!」みたいな記述とかないんですか?
0091デフォルトの名無しさん
2011/06/02(木) 01:05:24.660092デフォルトの名無しさん
2011/06/02(木) 01:14:17.30他のモジュールでも参考にして好きにすりゃいいよ
あとreturnはundefじゃなくて引数なしにしとけ
0093デフォルトの名無しさん
2011/06/02(木) 01:24:31.62http://perldoc.jp/docs/perl/5.10.0/perlfaq6.pod#What32is32o32really32for63
0095デフォルトの名無しさん
2011/06/02(木) 02:07:27.26undef を含む配列となる場合があるから return undef じゃなくて return のみ
書くと良い訳ですね。
ふと思ったけど、たしか関数が何で評価されてるか知る関数ありましたよね?
スカラなら return undef で、配列なら return で返せるといいなぁ。
やっぱ undef をちゃんと返したい (^_^;)
0096デフォルトの名無しさん
2011/06/02(木) 02:18:51.37質問の前に関数一覧ぐらい確認しろ
http://perldoc.jp/index/function
0097デフォルトの名無しさん
2011/06/02(木) 07:00:23.29前日(2011-05-31)と、一週間前(2011-05-25)を求めたい
丁度いいモジュールか計算方法を教えて下さい
0098デフォルトの名無しさん
2011/06/02(木) 07:20:17.600099デフォルトの名無しさん
2011/06/02(木) 07:30:12.77use Time::Piece;
use Time::Seconds;
my $t = Time::Piece->strptime("2011-06-01","%Y-%m-%d");
say ($t - ONE_DAY); # Tue May 31 00:00:00 2011
say ($t - ONE_WEEK); # Wed May 25 00:00:00 2011
>>98
Date::Simple もたしかにいいね
0100デフォルトの名無しさん
2011/06/02(木) 14:14:14.98separator やenclosure 自体のエスケープがないのだから、 $enclose$separat$enclose をそのまま並べた文字列がきたらアウトだろ。
CSVの """" や application/x-www-form-urlencoded の %HH のようなエスケープ処理がないと無理。
0101デフォルトの名無しさん
2011/06/02(木) 15:35:44.19$separatを1つ付け加えることで、$enclose$separat$encloseという並びが
付け加える処理を行った後のデータには含まれてないことが保証されるように
するって考えなわけです。$separatは前処理で少なくとも2回以上の繰り返し
になっているはずなので一つだけなら区切りだとわかるわけだな。
0102デフォルトの名無しさん
2011/06/03(金) 00:16:40.95それは存在出来ないのでは
010375
2011/06/03(金) 00:33:11.64>>100 joinがそれを起こすので、それを起こさないための Separator_join ですね。それじゃjoinと全く同じですw。
そこはメインで解決されてると言うか、そのための関数です。本趣旨がそれなんでw。
蛇足ですが、この前メールのヘッダーを調べてきたら Separator_join(q[.], qq[\n], @hoge); と同じ仕様だったようです。
メーラー作る時はSeparator_split(q[.], qq[\n], $hoge); で文字を壊さずに復元できるようです。
(メールは全文字列を受け付けます。問題は想定ミスや記述ミスだと思います)。
ちなみにセパレーターとかを選べるのは、プログラマーが処理が増大しないような文字を勝手に考えて決めろ、って言うことです。
0104デフォルトの名無しさん
2011/06/03(金) 07:04:43.98うまくいきました。ありがとうございます
0105デフォルトの名無しさん
2011/06/04(土) 02:19:25.49foreach my $com1 (0 .. 199){
foreach my $com2 ( 0 .. 150 ){
$map[$com1]->[$com2] = 1;
}
}
上記の処理をアルファベットの x を使って my と同時に一行で書ける処理があったような気がするんですが、
どうにも思い出せません。
すみませんけど教えてください。
0106デフォルトの名無しさん
2011/06/04(土) 02:27:32.10ttp://chaichan.web.infoseek.co.jp/perlnote/perlnote2008-04-062.htm
ttp://chaichan.web.infoseek.co.jp/perlnote/perlnote2008-04-062.htm
0107デフォルトの名無しさん
2011/06/04(土) 02:27:53.05http://perldoc.jp/docs/perl/5.12.1/perlop.pod#Multiplicative32Operators
http://perldoc.jp/func/map
http://perldoc.jp/docs/perl/5.10.0/perllol.pod
http://perldoc.jp/docs/perl/5.10.0/perldsc.pod (broken)
my @map = map [ (1) x 151 ], 0..199;
0108デフォルトの名無しさん
2011/06/04(土) 02:28:23.45ttp://ameblo.jp/jiang4/entry-10746177724.html
0109デフォルトの名無しさん
2011/06/04(土) 02:37:49.06でいいのだろうか?
それともこうだろうか?
$map = ((([1]) x 151) x 200);
ごめんなさい、なんかどうカッコを書けばどうゆうリストが返るのかイマイチ分かってないです。
0110デフォルトの名無しさん
2011/06/04(土) 02:46:04.63こうのような気がしてきました。一応試してみますけど、
カッコとxの関係を誰か教えてください。
0111デフォルトの名無しさん
2011/06/04(土) 02:59:27.40>>107
http://perldoc.jp/docs/perl/5.10.0/perlref.pod
#!/usr/bin/perl -w
use strict;
my @map = map [ (1) x 3 ], 0..4; # リストリファレンスを5回作る
print '$map[', $_, '] = ', "$map[$_]\n" for 0..$#map;
print "---\n";
@map = ([(1) x 3]) x 5; # 一度作ったリストリファレンスのコピーを5個入れる
print '$map[', $_, '] = ', "$map[$_]\n" for 0..$#map;
__END__
0112デフォルトの名無しさん
2011/06/04(土) 03:03:25.72すみません、mapを使わなくても出来たような記憶があるんです。
テストしてませんが調べてきました。
xはスカラー値に対しては、その回数を繰り返し連結したスカラーを返すようです。
()に対する x は全く別の働きをし、リストとして複製し、リストを返すようです。
まだテストしてませんが、たぶん>>110で大丈夫だと思います。
0113デフォルトの名無しさん
2011/06/04(土) 03:14:16.79my @test = ([(1) x 3]) x 5;
foreach my $ref_ary (@test){
foreach my $print (@$ref_ary ){
print "$print\n";
}
print "\n"
}
0114デフォルトの名無しさん
2011/06/04(土) 03:16:11.44なんとなく書いてみたけど、これでいいような気もしなくはない
0115デフォルトの名無しさん
2011/06/04(土) 03:16:47.89まじすみません!
流し読みしてました!
ソレは困ります!
0116デフォルトの名無しさん
2011/06/04(土) 03:25:28.38ちょっと考えましたが x だと同じリファレンスのコピーしか生成しない気がしたので、
map関数の記述をありがたく頂くことにしました。
ありがとうございます。
>>114
その記述だともしうまく行っても、Perl特有の暗黙のなんかがあるのだろうけど、
どこでリファレンスが発生するのかよくわからない・・・
0117デフォルトの名無しさん
2011/06/04(土) 03:26:15.46下らんことで長々すみませんでした。
0118デフォルトの名無しさん
2011/06/04(土) 09:11:22.28複数のFHを扱うので、ハッシュがいいのですが、
open FH, ファイル名
$test=*FH
で変数扱いdと上手くいくけど、
$hash{"FILE1"}=*FH
でハッシュだと上手くいきません。
0119デフォルトの名無しさん
2011/06/04(土) 09:13:13.180120デフォルトの名無しさん
2011/06/04(土) 09:20:05.75すいません、わかりません ><
具体的に教えて
0121デフォルトの名無しさん
2011/06/04(土) 09:45:32.31http://perldoc.jp/docs/perl/5.10.1/perlfaq5.pod#How32can32I32use32a32filehandle32indirectly63
http://perldoc.jp/docs/perl/5.10.1/perlfaq5.pod#How32can32I32make32a32filehandle32local32to32a32subroutine63How32do32I32pass32filehandles32between32subroutines63How32do32I32make32an32array32of32filehandles63
http://perldoc.jp/docs/perl/5.10.0/perldata.pod#Typeglobs32and32Filehandles
0122デフォルトの名無しさん
2011/06/04(土) 14:08:27.01具体的にって言ってんだろ死ねよボケ
0123デフォルトの名無しさん
2011/06/04(土) 14:35:10.920124デフォルトの名無しさん
2011/06/04(土) 15:13:20.60リンク先に具体的にいろいろ書いてあるだろ
隅々までよく読んで勉強せい
0125デフォルトの名無しさん
2011/06/04(土) 15:44:05.76へんな化石みたいなサイトを見てるくせにまっとうなところは見ない。
0126デフォルトの名無しさん
2011/06/04(土) 16:01:16.610127デフォルトの名無しさん
2011/06/04(土) 16:02:41.480128デフォルトの名無しさん
2011/06/04(土) 17:56:42.16みたいだな
0130デフォルトの名無しさん
2011/06/04(土) 18:37:12.93計測するツールはありますか?
0131デフォルトの名無しさん
2011/06/04(土) 18:48:37.18システムはFedora13で、webページでログインして数カ所を巡回する程度ですが、1分以上掛かります。
sslが遅いのかもしれませんがよく分かりませんでした。
0132デフォルトの名無しさん
2011/06/04(土) 19:01:21.030133デフォルトの名無しさん
2011/06/05(日) 09:16:21.08`sed -i '1s/^/MESAAGE\n' $file`
って書いたのに、
sed: -e 表現 #1, 文字数 10: 「s」コマンドが終了していません
とか言われるのは何故?
0134134
2011/06/05(日) 09:35:25.230135135
2011/06/05(日) 10:20:36.570136136
2011/06/05(日) 10:34:31.120137デフォルトの名無しさん
2011/06/05(日) 11:45:45.49ふつうのやつって、半分以上容器代だよね。
0138デフォルトの名無しさん
2011/06/05(日) 12:01:09.950139デフォルトの名無しさん
2011/06/05(日) 12:40:03.74いつも残りの90%で時間を無駄にしている気がする
0140デフォルトの名無しさん
2011/06/06(月) 05:52:55.44my $obj = CGI->new;
とか、書くのが書籍などではオブジェクト思考と言われていますが
普通に require や use して、package::package_sub();
として呼び出すだけじゃだめなんですか?
そもそも、パッケージ化してその都度呼び出すこと自体がオブジェクト指向じゃないんですか?
0141デフォルトの名無しさん
2011/06/06(月) 06:08:37.67状態を持つオブジェクトを複数同時に扱 うのが楽。
IO::FileのかわりにIO::Stringをサブルーチンに渡すなどの応用が楽。
ただしモジュールを書く側は再利用を考えて設計するので面倒。
0142デフォルトの名無しさん
2011/06/06(月) 06:12:13.10http://perldoc.jp/docs/perl/5.10.0/perlboot.pod
0143デフォルトの名無しさん
2011/06/06(月) 23:30:46.92@aiueo = ('a', 'b', 'c', 'd', 'e');
$rand = int(rand(6))
if($rand == 0){print "$aiueo[0]";}
elsif($rand == 1){print "$aiueo[1]";}
elsif($rand == 2){print "$aiueo[2]";}
elsif($rand == 3){print "$aiueo[3]";}
elsif($rand == 4){print "$aiueo[4]";}
このソースをなんとかしてまとめることは出来ませんか?
$aiueoの[]の中に乱数をそのまま入れたいんです、お願いします><
0144デフォルトの名無しさん
2011/06/06(月) 23:33:56.91$rand = int(rand(6));
print "$aiueo[$rand]";
どうでしょう
0145デフォルトの名無しさん
2011/06/06(月) 23:39:20.14print $aiueo[rand @aiueo];
0146デフォルトの名無しさん
2011/06/07(火) 00:09:21.69代数の値があまりにも大きいとe+○○という数になります。
これを整数で表示させる方法はないでしょうか。
0147デフォルトの名無しさん
2011/06/07(火) 00:09:24.33助かりました、ありがとうございます!
0148デフォルトの名無しさん
2011/06/07(火) 00:11:43.67BigIntを使う
0149デフォルトの名無しさん
2011/06/07(火) 00:15:16.55use Math::BigInt; ってのがあったんですね。
ありがとうございました。
0150デフォルトの名無しさん
2011/06/07(火) 00:21:14.950151デフォルトの名無しさん
2011/06/07(火) 01:01:53.85>>144
ちょっとまて
その場合rand(6)じゃなくてrand(5)だろ?
0152デフォルトの名無しさん
2011/06/07(火) 21:54:25.930153デフォルトの名無しさん
2011/06/07(火) 22:45:44.96カイジ「ちょっとまてその場合rand(6)じゃなくてrand(5)だろ?」
0154tokuhirom
2011/06/08(水) 00:09:28.93なんでもこたえられます
職業Perlプログラマです
0155tokuhirom
2011/06/08(水) 00:10:26.810156tokuhirom
2011/06/08(水) 00:11:06.700157tokuhirom
2011/06/08(水) 00:21:55.01ここのスレ毎日チェックしてますね
おもしろいスレですね
2chやってることかくしてましてねえ
小飼弾はしにま
0158tokuhirom
2011/06/08(水) 00:22:30.35ききたいことあったら明日きいてね
ぼくいつでもいるから
0159tokuhirom
2011/06/08(水) 00:23:04.12ぼくのファンのかた残念だたね
おやすみ
0160tokuhirom
2011/06/08(水) 00:24:42.200161デフォルトの名無しさん
2011/06/08(水) 01:46:40.11use Math::BigFloat;
for($k = 1,$n = <>;$k <= $n;$k++){
$m = (1+ 1/$k) ** $k;
print "$m\n";
}
Math::BigFloat;を使っても、
計算精度も桁数も変わらないんですが、なぜでしょうか?
0162デフォルトの名無しさん
2011/06/08(水) 01:50:12.070163デフォルトの名無しさん
2011/06/08(水) 02:08:47.360164デフォルトの名無しさん
2011/06/08(水) 02:11:36.890165デフォルトの名無しさん
2011/06/08(水) 02:26:55.560166デフォルトの名無しさん
2011/06/08(水) 03:28:45.79use Math::BigFloat;
my $n = <>;
for(my $k = Math::BigFloat->new(1); $k <= $n; $k++){
my $m = (1 + 1/$k) ** $k;
print "$m\n";
}
面倒なら、use bignum;使うといいよ。チョーお勧め。
0167デフォルトの名無しさん
2011/06/08(水) 03:40:50.41new の中から、そのパッケージのメソッドを呼ぶにはどうすれば良いですか?
あるメソッドの内容とコンストラクタの中とで重複する処理があるので、コンストラクタから
メソッドを呼びたいです。
と書いたところでググってたら、コンストラクタからメソッドは呼ぶな!というのがあって、
めんどくさいけど、同じ内容を書こうと思います。
0168デフォルトの名無しさん
2011/06/08(水) 04:14:54.33何の事か分からんけど、副作用が無ければ、
下のようにして_init内にゴリゴリ書けばいいよ。
package _Foo;
sub new {
my ($class) = @_;
my $self = bless{}, $class;
$self->_init;
return $self;
}
sub _init {
my ($self) = @_;
...
}
0169デフォルトの名無しさん
2011/06/08(水) 04:42:24.920170デフォルトの名無しさん
2011/06/08(水) 07:35:45.29use bignumを調べてみました
ホントに便利ですねw
貴重な情報ありがとうございました。
それと、
出力結果を、
メモ帳にリダイレクトする方法はありませんか?
0171デフォルトの名無しさん
2011/06/08(水) 11:20:00.99メモ帳はできないみたいだけど、エディタによってはできるんじゃない?
秀丸の場合は
perl hoge.pl | C:\PROGRA~1\Hidemaru\Hidemaru.exe
0172デフォルトの名無しさん
2011/06/08(水) 12:36:11.39もうじき成立する法律で、自前サイトもってる人がログ保存してないと3年の懲役らしいのです
http://www.asyura2.com/11/senkyo113/msg/921.html
半分ぐらいはネットで拾ったコードなので中身把握してないので非常に困ってます
0173172
2011/06/08(水) 12:37:45.60念の為に法務省の法律の原文です
0174デフォルトの名無しさん
2011/06/08(水) 12:52:03.29Webサーバを運用してるのなら Webサーバのアクセスログで良くね?
Webサーバを運用なら何か他の目的で必要としない限りは必要無いだろ
0175174
2011/06/08(水) 12:53:04.680176デフォルトの名無しさん
2011/06/08(水) 12:57:05.89apacheのログだけとれば十分ということでもないようです
FreeBSDのportsで入れた後で少し改造した物などでは
apacheを経由してないものもあるみたいなのです
0177デフォルトの名無しさん
2011/06/08(水) 15:19:07.880178デフォルトの名無しさん
2011/06/08(水) 15:21:38.650179デフォルトの名無しさん
2011/06/08(水) 15:29:06.85/(?-i:hoge)/i ってことか?
0180デフォルトの名無しさん
2011/06/08(水) 16:29:18.060181デフォルトの名無しさん
2011/06/08(水) 18:50:28.98ありがとうございます。
メモ帳以外ならどこかにリダイレクト可能ですか?
0182デフォルトの名無しさん
2011/06/08(水) 18:57:59.87Tempフォルダにでもファイルとしてリダイレクトして
その後にメモ帳で開けば良いんでね?
0183デフォルトの名無しさん
2011/06/08(水) 20:06:42.37$a = `nkf -j $b`;
がうまくいかない・・・
どうしたらよい?
0184183
2011/06/08(水) 20:56:10.83$bはファイル名じゃなくてもろに
変換したい文字列だからいけないんだなw
自己解決。
0185デフォルトの名無しさん
2011/06/08(水) 21:10:21.34ありがとうございました!
0186Perlインストラクターm.a.l.a
2011/06/08(水) 23:17:49.060187Perlインストラクターm.a.l.a
2011/06/08(水) 23:20:27.97ぜんぜん使い方がちがうのに yappoのString::Diffモジュールだしてて は?wっておもいました
だまってました 明らか文字列じゃなくて 行のくらべなのにString::Diffだしてこけてました
ですが笑いがこらえられませんでした わざといったのか まじで勘違いしてミスってたのかおもしろかったです
0188Perlインストラクターm.a.l.a
2011/06/08(水) 23:21:04.230189デフォルトの名無しさん
2011/06/08(水) 23:52:29.65use strict;
use warnings;
require 'test_mod.pl';
MYTEST->import;
print MYTEST->abcd;
//test_mod.pl
use strict;
use warnings;
package MYTEST;
sub abcd{
$aaa = '123';
return $aaa;
}
abcd() の $aaa は my とか our とかで宣言してないからエラーが出るものと思ってましたが、
普通に 123 と表示されてしまいます。
これって何故なんでしょう?
あと
return $aaa;
を
print $aaa; # 呼び出しは MYTEST->abcd; のみ
とすると、コンソールに何も表示されません。
何故なんだぜ?
0190デフォルトの名無しさん
2011/06/09(木) 01:47:15.29編集中にファイルを変更してて、編集すべきファイルが異なってました ^-^;
ついでなのですが、作った package にオブジェクトと関数を混在して書くのは、
別に行儀の悪い事ではないですよね?
package TEST;
use base Exporter;
our @EXPORT = qw/func1 func2/;
sub func1{〜} # ただの関数
sub func2{〜} # おなじく関数
sub new{〜} # おぶじぇくとさくせー
sub proc{〜} # おぶじぇくとに対する処理
こんな感じを考えてます。
0191デフォルトの名無しさん
2011/06/09(木) 19:10:22.56Xp SP3, perl 5.10です。
0192デフォルトの名無しさん
2011/06/09(木) 19:24:55.25http://perldoc.perl.org/perlvar.html#$EXECUTABLE_NAME
0193デフォルトの名無しさん
2011/06/09(木) 21:32:24.22それです。探していたそのものです。
0194otsune
2011/06/09(木) 23:04:27.54みつけにくいものですか?
かばんの中も机の中も探したけれど見つからないのにまだまだ探す気ですか?
0195デフォルトの名無しさん
2011/06/10(金) 00:06:43.33ttp://a1.twimg.com/profile_background_images/3696118/otsune.jpg
0196デフォルトの名無しさん
2011/06/10(金) 00:30:11.47カスラックから許諾とらないとダメですよ。
0197otsune
2011/06/10(金) 19:16:47.670198デフォルトの名無しさん
2011/06/11(土) 00:03:27.02perl - 勝手に添削 - utf8環境でperl::Jcodeのtrが使えないとき
ttp://blog.livedoor.jp/dankogai/archives/51693618.html
>前世紀まではそれで正しかったのですが…
なんでいちいち嫌味ったらしいんだろうな。
0199デフォルトの名無しさん
2011/06/11(土) 00:14:17.530200デフォルトの名無しさん
2011/06/11(土) 02:04:59.310201デフォルトの名無しさん
2011/06/11(土) 04:07:03.26http://hibari.2ch.net/test/read.cgi/unix/1290209379/49
のPerlのパターンマッチに異常に時間がかかる例の回避法をおしえてください。
0202デフォルトの名無しさん
2011/06/11(土) 06:19:18.19実用上での話ならケースバイケース。
http://perldoc.jp/docs/perl/5.10.0/perlretut.pod
0203デフォルトの名無しさん
2011/06/11(土) 09:41:20.26で、引っ掛らないけどアスタリスクってダメなのか
0204デフォルトの名無しさん
2011/06/11(土) 09:52:58.050205デフォルトの名無しさん
2011/06/11(土) 10:37:55.30具体的にその引っかからない元文字列と正規表現パターンを示してみい
0206デフォルトの名無しさん
2011/06/12(日) 04:39:05.47ってやったら、AAA::BBB って
表示されたんですが、これはバグですか仕様ですか?
0207デフォルトの名無しさん
2011/06/12(日) 04:44:44.82warn AAA::BBB::; ってやったら、
AAA:BBBってでるんですが(ry
0208デフォルトの名無しさん
2011/06/12(日) 09:49:50.87http://jpcity.lolipop.jp/phpBBq/viewtopic.php?f=29&t=957#p1595
0209デフォルトの名無しさん
2011/06/12(日) 10:43:30.94> warn AAA::BBB::; ってやったら、
> AAA:BBBってでるんですが(ry
嘘をつくな。
AAA::BBB
と表示されるぞ。
そもそも warn AAA::BBB::; で何がしたいんだ?
0210デフォルトの名無しさん
2011/06/12(日) 12:41:37.61> AAA::BBB
> と表示されるぞ。
え? だからそれ、嘘じゃなくて自分が
書いている通りの結果ですよね?
warn AAA::BBB:: と書いたら、
AAA::BBB:: ではなく、AAA::BBB ってなる
理由を聞いているのですが。
0211デフォルトの名無しさん
2011/06/12(日) 18:17:32.87それを$abc2という変数で05と表示させたいです。
%02dを使えばできそうですがどのように書けばよいかわかりません。
0212デフォルトの名無しさん
2011/06/12(日) 18:39:28.29perl -MO=Deparse -e 'warn AAA::BBB::;'
warn 'AAA::BBB';
-e syntax OK
文字列'AAA::BBB'と認識されてるから。
なぜそうコンパイラが認識するかは知らん。
>>211
my $abc = 5;
my $abc2 = '%02d';
printf($abc2, $abc);
0213デフォルトの名無しさん
2011/06/12(日) 19:15:25.31説明不足ですみません
printf('%02d', $abc); を $abc2で表すにはどうすればよいでしょうか。
(printfを使わずに)
あいう$abc2えお と書けば、 あいう05えお
になるようにしたいのですが。
0214デフォルトの名無しさん
2011/06/12(日) 19:21:00.350215デフォルトの名無しさん
2011/06/12(日) 19:31:20.65my $abc2 = sprintf('%02d', $abc);
0216デフォルトの名無しさん
2011/06/12(日) 19:40:53.62XSとかInline::Cを使わないでCの関数を呼んだり
perlの関数をコールバックとしてCの関数に渡したりしたいです
0217デフォルトの名無しさん
2011/06/12(日) 19:43:00.93ありがとうございました
0218デフォルトの名無しさん
2011/06/12(日) 19:52:03.85新日本テクトスという会社を追われ、その後どうしてよいかわからなくなりました。
だけど私の大好きな尾崎豊の歌に励まされ、夢であるプロのクリエイターを目指すことにしました。
何度も挫けそうになりましたが、尾崎豊の歌を聞きながら自分を励ましています。
今も尾崎豊の歌のおかげで、夢を諦めずにCGアニメの製作を続けられています。
とりあえず、以下の動画を見てください。一生懸命作ったもので、自分では既にプロレベルの傑作だと思ってます。
できればみなさんのご意見、ご感想を聞きたいです。
復興支援アニメ.mp4
http://www.youtube.com/watch?v=yn4uTiN8vvM
湾岸鉄道キャンペーンCM(カラー).mp4
http://www.youtube.com/watch?v=g3PlX1OAhug&feature=channel_video_title
これは力作で、にしおかすみこさんにも是非見てもらいたかったため彼女のブログにコメントしたんですが無視されました。
http://blog.watanabepro.co.jp/nishiokasumiko/archives/2008/02/22_15_post_22.html
(下の方にあります。投稿者: hekeneko | 2008年03月24日 22:54)
やはり私の才能に気づいてくれる人は中々いないみたいですね(苦笑)。
題名”ラダニアムの翼”
A wing of radaniam_part�U.mp4
http://www.youtube.com/watch?v=keSK70uqDJY
A wing of radaniamu part_�V.mp4
http://www.youtube.com/watch?v=-LRZbXbirR0
題名”hekeneko honey”
http://www.youtube.com/watch?v=kATwf6fAkG8
私の世界観の全てを凝縮した力作です。hekenekoワールドをご堪能あれ。
0219デフォルトの名無しさん
2011/06/12(日) 20:05:36.19(苦笑) だけ読んだ
0220デフォルトの名無しさん
2011/06/12(日) 20:18:17.63著作権法違反ネー
0221デフォルトの名無しさん
2011/06/12(日) 20:57:57.23タグは無効かつ改行は有効にするにはどうしたらいいでしょう。
これだとタグは無効になりますが改行も無効になってします。
$in{'bbs'} =~ s/</</g;
$in{'bbs'} =~ s/>/>/g;
$in{'bbs'} =~ s/\r\n/<br>/g;
0222デフォルトの名無しさん
2011/06/12(日) 21:23:10.01あっすいません ここも掲示板なんで&lt;が< &gt;が>に化けちゃってますね
正しくは下記のとおりです
(&は小文字です)
$in{'bbs'} =~ s/</&lt;/g;
$in{'bbs'} =~ s/>/&gt;/g;
$in{'bbs'} =~ s/\r\n/<br>/g;
0223デフォルトの名無しさん
2011/06/12(日) 21:45:49.22使った事は無いけど、こんなのがあるらしい。
http://search.cpan.org/~rurban/C-DynaLib-0.61/lib/C/DynaLib.pm
Cの関数側からPerlを使うには…どうなんだろ。
Windows限定ならWin32::APIで出来るけどね。
>>222
期待してる結果が分からないので…HTML::Entitiesを使うと楽だよ。
use HTML::Entities;
...
$in{bbs} = encode_entities($in{bbs});
$in{bbs} =~ s/\r\n/<br>/g;
0224デフォルトの名無しさん
2011/06/12(日) 23:02:01.94たぶんこうだべ。
$in{'bbs'} =~ s/</&lt;/gs;
$in{'bbs'} =~ s/>/&gt;/gs;
$in{'bbs'} =~ s/\r\n/<br>/gs;
改行の変換のところは \r\n 固定でいいのかね?
0225デフォルトの名無しさん
2011/06/12(日) 23:09:36.770226デフォルトの名無しさん
2011/06/12(日) 23:20:03.250227デフォルトの名無しさん
2011/06/12(日) 23:20:41.630228デフォルトの名無しさん
2011/06/13(月) 01:14:37.89「改行も無効になって」しまう、の意味がいまひとつわからんかったのだが
単に処理対象テキストの改行コードが "\r\n" ではなく "\r" または "\n" だから、
ってだけの気もするよ。
しかしそもそもCGIの質問はスレ違いだったか。
0229デフォルトの名無しさん
2011/06/13(月) 01:27:08.04全部だめでした;
そこらの掲示板はタグは無効かつ改行は有効が普通ですけど、
結構難しいプログラムなんですかね?
0230デフォルトの名無しさん
2011/06/13(月) 01:41:58.860231デフォルトの名無しさん
2011/06/13(月) 01:46:50.66入力テキストの改行部分は既に<br>なりに置換済なんじゃないのか?
仮に改行部分が<br>に置換済だとすると
$in{'bbs'} =~ s/</&lt;/g;
$in{'bbs'} =~ s/>/&gt;/g;
の時点でテキスト内の <br> は &lt;br&gt; に置き換わってしまい、
$in{'bbs'} =~ s/\r\n/<br>/g;
は何の意味もない。
もしくは、本当に $in{'bbs'} 内に改行(コード)が存在するなら、
$in{'bbs'} =~ s/\r\n/<br>/g;
を
$in{'bbs'} =~ s/\r\n/\n/g;
$in{'bbs'} =~ s/[\r\n]/<br>/g;
に置き換えれば動くかもしれない。
0232デフォルトの名無しさん
2011/06/13(月) 01:48:25.87>>「改行も無効になって」しまう、の意味がいまひとつわからんかったのだが
222の書き方だと改行した部分が<br>になってしまうという意味です
>>しかしそもそもCGIの質問はスレ違いだったか。
これってPerlの正規表現じゃないんですかね;
0233デフォルトの名無しさん
2011/06/13(月) 02:26:47.89<br>になってしまうと言いたかったんだとしたら、>>222で示されてない部分で何か間違ってるんだろとしか。
my $s = "<span>foo</span>\nbar";
$s =~ s/</</g;
$s =~ s/>/>/g;
$s =~ s,\r?\n,<br />,g;
print $s, "\n";
# 結果
<span>foo</span><br />bar
0234デフォルトの名無しさん
2011/06/13(月) 02:46:23.480235デフォルトの名無しさん
2011/06/13(月) 03:32:10.20デフォルトだとこうなっていました。この状態だと改行されますが、HTMLを入力された場合もタグとして表示されてしまいます。#1、#2を消すと確かにHTMLは文字として表示され無効になりますが、改行も文字として表示されてしまいます。
#タグ禁止処理
#1 $in{'m_com'} =~ s/</&lt;/g;
#2 $in{'m_com'} =~ s/>/&gt;/g;
# コメントの改行処理
$in{'m_com'} =~ s/\r\n/<br>/g;
$in{'m_com'} =~ s/\r/<br>/g;
$in{'m_com'} =~ s/\n/<br>/g;
デフォルトの場合
--------------------------------------------------
あいうえお
<b>かきくけこ</b>
↓投稿後の表示
あいうえお
かきくけこ(太字)
--------------------------------------------------
#1、#2を消した場合
--------------------------------------------------
あいうえお
<b>かきくけこ</b>
↓投稿後の表示
あいうえお<br><b>かきくけこ</b>
--------------------------------------------------
0236デフォルトの名無しさん
2011/06/13(月) 03:59:57.04あのさー。
タグ禁止処理をしてないのに、改行させたい箇所が
ちゃんと“表示上”改行されているんだったら、
そのテキストには改行箇所に"\r\n"とかではなく
"<br>"の形でタグが入ってるってことでしょうが。
そのテキストで「タグ禁止処理」をしたら、
当然"<br>"は"&lt;br&gt;"に変換されてしまって、
改行させたい箇所にそれが"<br>"の形で表示されるでしょ。
何の不思議もないじゃん。
そのテキストで改行の"<br>"のみ有効のままにして
他のタグは全部無効にしたいなら、例えば
$in{'bbs'} =~ s/<br>/[[[BR]]]/g;
$in{'bbs'} =~ s/</&lt;/g;
$in{'bbs'} =~ s/>/&gt;/g;
$in{'bbs'} =~ s/[[[BR]]]/<br>/g;
みたいな処理をせにゃ。まあ上の例は適当だけど。
0237デフォルトの名無しさん
2011/06/13(月) 17:05:13.36同じようなことをやっている人いますかね?
いたらサンプル見せてもらえるとありがたいんですが・・
0238デフォルトの名無しさん
2011/06/13(月) 17:25:49.97無いのかと思ってgoogle先生に聞いてみたら
腐るほどでてきじゃなないか・・・
プログラム全体のサンプルとかスレチ。
0239デフォルトの名無しさん
2011/06/13(月) 17:29:28.97ちなみに英語は完全スルー
0240デフォルトの名無しさん
2011/06/13(月) 17:31:36.440241デフォルトの名無しさん
2011/06/13(月) 18:03:50.84最悪ログイン部分だけでもいいので
0242デフォルトの名無しさん
2011/06/13(月) 19:57:19.590243デフォルトの名無しさん
2011/06/13(月) 20:14:25.32そのディレクトリがあるかどうかでロックの判断をしている場合が多いけど
ディレクトリの変わりにロック用のファイルにして処理すると問題あるんですか?
(ロック用のファイルが存在していればロックして書き込めないというように)
0244デフォルトの名無しさん
2011/06/13(月) 20:16:36.68ではサンプルでなくてログインの仕方を教えてください
お願いします。分からないのなら知っている方がいたらお願いします
0245デフォルトの名無しさん
2011/06/13(月) 20:34:37.14ググり方から勉強した方がいいんじゃない?
思いっきりそのままのコードが出てきたよw
そんな言い方したら多分もう誰も教えてくれない。
0246デフォルトの名無しさん
2011/06/13(月) 20:58:17.93ちゃんと教えてあげなよ!
・・・
>>237
ググったら2個目のリンクに出てくるじゃねぇか
ちゃんと探せよクズw
0247デフォルトの名無しさん
2011/06/13(月) 21:04:45.91>>246
ぐぐりかたを参考におしえてください
0248デフォルトの名無しさん
2011/06/13(月) 21:09:10.50どうせあれだし
0249デフォルトの名無しさん
2011/06/13(月) 21:11:21.910250デフォルトの名無しさん
2011/06/13(月) 21:17:31.03排他処理はアトミックに行わないとダメ。
> (ロック用のファイルが存在していればロックして書き込めないというように)
「存在する」と「ロックする」の間で、割り込まれる可能性がある。
0251デフォルトの名無しさん
2011/06/13(月) 21:45:44.120252デフォルトの名無しさん
2011/06/13(月) 21:47:51.68>>237にキーワードが沢山あるじゃん
ここまで物を探せないって幼稚園児じゃあるまいし・・・
0253デフォルトの名無しさん
2011/06/13(月) 23:36:30.59まずこれね。
http://news23.2ch.net/test/read.cgi/news/1183181612
0254デフォルトの名無しさん
2011/06/14(火) 23:49:16.30dat落ちしてて読めない
0255デフォルトの名無しさん
2011/06/15(水) 00:53:34.08とりあえず対話式で学んでいこうかなと思ったんだけど、
デフォルトではそういう機能ないみたいですね?
Rubyで言うところのirbみたいな機能のことですけど。
0256デフォルトの名無しさん
2011/06/15(水) 01:25:28.26↑これでrubyのirbみたいな感じになるんだね。今調べてみてわかった。
0257デフォルトの名無しさん
2011/06/15(水) 16:21:15.71ドットとかもいいんでしょうか?
0258デフォルトの名無しさん
2011/06/15(水) 16:57:13.54逆に使えない文字があったらびっくり。
0259デフォルトの名無しさん
2011/06/15(水) 20:53:18.910260デフォルトの名無しさん
2011/06/15(水) 23:41:27.400261デフォルトの名無しさん
2011/06/15(水) 23:46:39.430262デフォルトの名無しさん
2011/06/16(木) 00:07:59.060263デフォルトの名無しさん
2011/06/16(木) 00:12:08.450264デフォルトの名無しさん
2011/06/16(木) 09:29:23.090265デフォルトの名無しさん
2011/06/16(木) 10:25:35.80別モンの質問だな。
0266uy ◆yyC0rYWEq2
2011/06/16(木) 16:39:59.82Perlスレ住民はゴミだからRubyにこい
ログインするところまではかいてやった
>gem install mechanize
require 'rubygems'
require 'mechanize'
require 'kconv'
agent = Mechanize.new
uri = URI.parse("http://www.google.co.jp/")
agent.get(uri)
agent.page.link_with(:text => "Gmail".toutf8).click
#puts agent.page.uri
agent.page.form_with(:name => nil){|f|
f.field_with(:name => "Email").value = " ID "
f.field_with(:name => "Passwd").value = " password"
}.click_button
puts agent.page.uri
0267uy ◆yyC0rYWEq2
2011/06/16(木) 17:02:14.30require 'mechanize'
require 'kconv'
agent = Mechanize.new
uri = URI.parse("http://www.google.co.jp/")
agent.get(uri)
agent.page.link_with(:text => "Gmail".toutf8).click
agent.page.form_with(:name => nil){|f|
f.field_with(:name => "Email").value = " ID "
f.field_with(:name => "Passwd").value = " password "
}.click_button
puts agent.page.uri
s = Kconv.tosjis(agent.page.body)
a = "</font></font> <b>"
b = "</b>"
puts "si nn tya ku"
s.scan(/#{a}(.*?)#{b}/) do | n |
puts n
end
余裕すぎワロタ
0268デフォルトの名無しさん
2011/06/16(木) 17:18:56.940269uy ◆yyC0rYWEq2
2011/06/16(木) 17:21:31.890270デフォルトの名無しさん
2011/06/16(木) 18:15:00.21ファイルの読み込みのときはロックしなくても問題ないですか?
0271デフォルトの名無しさん
2011/06/16(木) 18:20:39.28ファイル1のロック
ファイル1への書き込み
ファイル1のロック解除
ファイル2のロック
ファイル2への書き込み
ファイル2のロック解除
でも問題ないんでしょうか?
ファイル1がロック中でファイル2がロックじゃないとき
ファイル1には書き込まれなくてファイル2には書き込まれるということになると
連動する場合ファイル1と2でデータがずれる気もしますが
0272デフォルトの名無しさん
2011/06/16(木) 18:34:07.230273デフォルトの名無しさん
2011/06/16(木) 18:34:59.20http://perldoc.jp/func/flock
http://perldoc.jp/docs/perl/5.10.1/perlfaq5.pod#How32can32I32lock32a32file63
その下3つのQ&Aも
0274デフォルトの名無しさん
2011/06/16(木) 18:39:40.170275デフォルトの名無しさん
2011/06/16(木) 20:34:58.46対象を指定せずに何をロックするんだ
http://perldoc.jp/docs/perl/5.10.0/perlopentut.pod#File32Locking
単にPerlスクリプト上での見た目の話なら、環境によっては
sysopen で O_EXLOCK や O_SHLOCK が使える
0276デフォルトの名無しさん
2011/06/16(木) 23:16:06.14$;
ハッシュのキーでこの中にある文字は使ってはいけません。
いや、使ってもいいんだけど、変な事が起きても知りません的なことになりかねません。
0277デフォルトの名無しさん
2011/06/16(木) 23:35:52.09まだ見てるか分からないけど、IMAP 使ったほうが楽じゃない?
0278デフォルトの名無しさん
2011/06/16(木) 23:51:16.43分けてロックするより
ロック
ファイル1の書き込み
ファイル2の書き込み
ロック解除
の方がいい
0279デフォルトの名無しさん
2011/06/16(木) 23:53:10.840280デフォルトの名無しさん
2011/06/17(金) 00:08:30.85テンポラリファイル2に書き込み
ロック
元のファイルを別名にリネームして、テンポラリファイル1をリネーム
元のファイルを別名にリネームして、テンポラリファイル2をリネーム
アンロック
の方が、オリジナルファイルに対するファイル操作時間が少なくてオススメ。
もしテンポラリファイルの書き込み途中でスクリプトが kill されてても、
所詮はテンポラリファイルなのでオリジナルのファイルには影響無い。
テンポラリファイルは1時間とかそれ以上の時間があるものなら削除するようにすれば OK。
0281デフォルトの名無しさん
2011/06/17(金) 00:31:00.38その場合、ほぼ同時に二つのプロセスが進入すると、
先に進入したプロセスの結果が消えることがある。
0282デフォルトの名無しさん
2011/06/17(金) 00:33:56.820283デフォルトの名無しさん
2011/06/17(金) 00:41:31.59間違えた。
0284デフォルトの名無しさん
2011/06/17(金) 19:44:52.530285デフォルトの名無しさん
2011/06/18(土) 00:26:07.450286デフォルトの名無しさん
2011/06/18(土) 14:09:27.650287デフォルトの名無しさん
2011/06/18(土) 15:13:39.49http://perldoc.perl.org/perlrun.html#*-i*[_extension_]
http://perldoc.jp/docs/perl/5.10.0/perlrun.pod
0288デフォルトの名無しさん
2011/06/18(土) 16:20:17.32あるかないか だけ答えろよ。うっとおしいやつだな。
0289デフォルトの名無しさん
2011/06/18(土) 16:52:34.620290デフォルトの名無しさん
2011/06/18(土) 16:56:02.01その言葉から読み取れる脳の思考の意図を読め。
言葉遊びたりともうっとおしいという日本語は存在しない。
0291デフォルトの名無しさん
2011/06/18(土) 18:24:54.51○ うっとうしい (鬱陶しい)
0292デフォルトの名無しさん
2011/06/18(土) 18:34:16.090293デフォルトの名無しさん
2011/06/18(土) 18:39:30.570294デフォルトの名無しさん
2011/06/18(土) 19:03:28.41Perl界のアイドルはtokuhiromね
覚えてねみんな
http://twitter.com/tokuhirom
よろしく
0295デフォルトの名無しさん
2011/06/18(土) 19:05:32.27ここに乗ってるの全員フォローしてください
お願いします
よろしくかすども
0296デフォルトの名無しさん
2011/06/18(土) 20:48:38.03> 言葉遊びたりともうっとおしいという日本語は存在しない。
そんな「たりとも」の使い方は少なくとも日本語には存在しない。
こんな日本語不自由な奴に他人の日本語の間違いを指摘する資格はない。
0297デフォルトの名無しさん
2011/06/18(土) 21:20:42.830298デフォルトの名無しさん
2011/06/18(土) 21:41:04.750299デフォルトの名無しさん
2011/06/18(土) 21:48:24.17なるほど、それやってみます。ありがとでした。
0300デフォルトの名無しさん
2011/06/18(土) 21:50:28.09>> 298
ありがとでした。
0301デフォルトの名無しさん
2011/06/19(日) 00:28:33.12どういう書き方が一番短く出来るの?
while( ($key,$value) = each %hash ){ print "$key=$value\n"; }
みたいな感じのやつ
0302デフォルトの名無しさん
2011/06/19(日) 00:34:37.670303デフォルトの名無しさん
2011/06/19(日) 00:40:53.890304デフォルトの名無しさん
2011/06/19(日) 00:45:38.820305デフォルトの名無しさん
2011/06/19(日) 01:00:50.88今はハッシュって言うよね。
0306デフォルトの名無しさん
2011/06/19(日) 01:01:23.10perl使いはすげえ
0307デフォルトの名無しさん
2011/06/19(日) 01:06:56.51別に古い言い方ではないよ、同様の要素の総称としてなら現役で使われる用語
ただPerl用語としてはハッシュと呼ぶのが公式だな
0308デフォルトの名無しさん
2011/06/19(日) 01:13:05.32連想配列という名前の方が正しい。
0309デフォルトの名無しさん
2011/06/19(日) 06:27:01.100310デフォルトの名無しさん
2011/06/19(日) 12:23:56.390311デフォルトの名無しさん
2011/06/19(日) 13:08:38.740312デフォルトの名無しさん
2011/06/19(日) 13:13:40.90foreachのほうが処理が速いって言ってるサイトがあるけど、いったいどっちが本当なんだ
0313デフォルトの名無しさん
2011/06/19(日) 13:26:10.390314デフォルトの名無しさん
2011/06/19(日) 13:55:44.38コード上で 'for' と書かれているか 'foreach' と書かれているかに関係なく、
条件部が3文から成っていれば「for」ループと解釈され、
リストが置かれていれば「foreach」ループと解釈されるので「変わらない」。
リストの全要素に対して反復処理を行う場合は、「for」ループで
同様の処理を書くよりも専用の「foreach」ループの方が「速い」。
#!/usr/bin/perl -w
use strict;
use Benchmark 'timethese';
my @Array = (0..9,'A'..'Z','a'..'z') x 100;
timethese(-5, {
f1 => sub { for (my $i = 0; defined $Array[$i]; ++$i) {} },
f2 => sub { foreach (my $i = 0; defined $Array[$i]; ++$i) {} },
e1 => sub { foreach my $chr (@Array) { defined $chr } },
e2 => sub { for my $chr (@Array) { defined $chr } },
e3 => sub { my $i = 0; foreach my $chr (@Array) { defined $chr; ++$i } },
e4 => sub { my $i = 0; for my $chr (@Array) { defined $chr; ++$i } },
});
__END__
0315デフォルトの名無しさん
2011/06/19(日) 13:57:09.54foreach( $i=0; $i<@array; $++ ) という形式のことを
慣例上 for と言ってるだけ?
0316Perl忍者
2011/06/19(日) 15:07:21.27いい加減進歩ないね
あほみたいですね
ばっかじゃねーの バーーーカ
0317Perl忍者
2011/06/19(日) 15:07:57.66wwwwwwwwwwwwwwwwwww
wwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww文法なんてできてあたりまえだろはげwwwwwwww
wwwwwwwwwwwwwwwwwww
wwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww文法なんてできてあたりまえだろはげwwwwwwww
wwwwwwwwwwwwwwwwwww
wwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww文法なんてできてあたりまえだろはげwwwwwwww
wwwwwwwwwwwwwwwwwww
wwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww文法なんてできてあたりまえだろはげwwwwwwww
wwwwwwwwwwwwwwwwwww
wwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww文法なんてできてあたりまえだろはげwwwwwwww
wwwwwwwwwwwwwwwwwww
wwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww
0318Perl忍者
2011/06/19(日) 15:09:03.03こいつら新車wwwwwwwwwwwww
Perl新車だよwwwwwwww「
あと30年たってもPerlPerlわめいてそうですねwwwwwwwwwwwww
0319デフォルトの名無しさん
2011/06/19(日) 16:55:19.130320デフォルトの名無しさん
2011/06/19(日) 17:51:21.96なるほど、どっちも正解だったのか
何も考えずforeachで統一することにするよ
ありがとう
0321デフォルトの名無しさん
2011/06/19(日) 18:22:29.89どちらかと言えばforに統一のが良いような…
foreachって書くと、あまり三文形式のforに見えないイメージ
一方のforはforeachの意味で使う言語が結構あるからね
0322デフォルトの名無しさん
2011/06/19(日) 18:57:19.03こだわりがあったわけじゃないけど、そもそも三文形式のforを使う機会がなかった。
0323デフォルトの名無しさん
2011/06/19(日) 18:59:20.470324デフォルトの名無しさん
2011/06/19(日) 19:08:32.570325Perl忍者
2011/06/19(日) 19:09:07.900326デフォルトの名無しさん
2011/06/19(日) 19:11:16.513文のほうはfor、変数とリストのほうはforeach
0327デフォルトの名無しさん
2011/06/19(日) 19:20:07.850328デフォルトの名無しさん
2011/06/19(日) 19:40:31.420329Perl忍者
2011/06/19(日) 19:45:15.12Perl通気取りwwwwwwwwwwwwwwwwwwwwwwwww
0330Perl忍者
2011/06/19(日) 19:45:49.060331デフォルトの名無しさん
2011/06/19(日) 20:05:35.15範囲演算子を使えない場合には 3文形式は便利
0332デフォルトの名無しさん
2011/06/19(日) 20:07:00.240333デフォルトの名無しさん
2011/06/19(日) 23:39:33.05わかります。
0334デフォルトの名無しさん
2011/06/21(火) 13:22:19.840335デフォルトの名無しさん
2011/06/21(火) 14:11:57.86perlのWin32::Registryモジュールについて質問です。
windowsにてレジストリの値を取得するため、使用させていただいてるのですが、たとえば
use strict;
use Win32::Registry;
my $reg = $HKEY_LOCAL_MACHINE;
my $key = "SOFTWARE\\value\\value01";
my $value_name = "value_name";
my $value;
my $type;
my $sub_reg;
$reg->Open($key, $sub_reg);
$sub_reg->QueryValueEx($value_name, $type, $value);
$reg->Close();
これで$valueに値がセットされて取得することができるとおもうのですが、
これを、また別の値を取得しようとして、もういちど繰り返すとエラーがでてしまいます。
どうやら、 $HKEY_LOCAL_MACHINEでつまずいてるようなのですが、解決法がわかりません。
$HKEY_LOCAL_MACHINE自体をprintすると、”Win32::Registry=HASH(0x18e843c)”という文字列で、
HASH以下は、取得するたびに変わるようでした。
サブルーチン化するにしても、結局$HKEY_LOCAL_MACHINEでつまずくので、どうしようもありません・・・
いいお知恵がありましたらご教示いただけると幸いです。
0336デフォルトの名無しさん
2011/06/21(火) 14:41:24.480337デフォルトの名無しさん
2011/06/21(火) 22:48:11.01ありがとうございます!下記のようにして、どうにか取得できました!
use strict;
use Win32::TieRegistry(Delimiter => "/");
my $dir01 = $Registry -> {"LMachine/SOFTWARE/value/value01"};
my $value01 = $dir01 -> GetValue("value_name");
my $dir02 = $Registry -> {"LMachine/SOFTWARE/value/value02"};
my $value02 = $dir02 ->GetValue("value_name");
print "$value01\n";
print "$value02";
0338デフォルトの名無しさん
2011/06/23(木) 02:07:33.680339デフォルトの名無しさん
2011/06/23(木) 09:04:03.750340デフォルトの名無しさん
2011/06/23(木) 09:40:27.500341デフォルトの名無しさん
2011/06/23(木) 10:00:08.32日本語でも英語でもなんでも
0342デフォルトの名無しさん
2011/06/23(木) 10:39:41.10<>で読み出せる1行の最大の大きさは何文字?
0343デフォルトの名無しさん
2011/06/23(木) 10:42:21.59だと各行の先頭に行番号を打てるけど
その2 perl -pe '$i++}{print$i'
だと全体の行数しか出力しない
行数を数えつつ各行も出力もしてほしかったんだけど
なぜその2では各行が表示されなくなってしまったんだ?
0344デフォルトの名無しさん
2011/06/23(木) 12:46:46.30cpan > install Crypt::SaltedHash
で入るバージョンが 0.05 なのはなぜなんだろう?
0345デフォルトの名無しさん
2011/06/23(木) 12:59:49.18}{ とかちゃんと意味わかって使ってる?
perl -pe 'CODE HERE' は
while (define($_ = <>) { CODE HERE } continue { print $_ }
に展開される(エラー処理とかも入ってるけど省略)から、
その2は
while (...) { $i++}{print$i } continue { print $_ }
となって、continue ブロックは while ブロックにではなくその外の {print$i } に紐付けられるから、最後に1回実行されるだけになる。
-p で各行を出力しつつループの外でも何かしたかったら BEGIN / END を使うのが無難。
$ perl -pe 's//$. /;END{print"$. lines\n"}'
あえて }{ を使って上と同じ結果を得たいなら
$ perl -ne 'print"$. $_"}{print"$. lines\n"'
$ perl -pe 'print"$. $_"}{$_="$. lines\n"'
0346デフォルトの名無しさん
2011/06/23(木) 13:56:02.47ありがとう! 完全に理解した。
while(<>){ $i++ } と { print $i }continue{ print $_; }
に解釈されるってことか!
0347デフォルトの名無しさん
2011/06/23(木) 13:57:04.140348339
2011/06/23(木) 14:37:28.710349デフォルトの名無しさん
2011/06/23(木) 15:48:46.66しるか!環境依存じゃ。
perlでは制限してない。
0350339
2011/06/23(木) 16:18:28.98環境依存であることのソースを教えてください
本当に制限していないんですか?
環境依存であるとして、オーバーしたら何がおきますか?
エラーが発生しますか? アウトオブメモリーになりますか?
0351デフォルトの名無しさん
2011/06/23(木) 17:00:51.80疑問を持った君が検証して率先垂範してくれたまえ
0352デフォルトの名無しさん
2011/06/23(木) 17:04:21.09自分の環境でプログラム止まるまで文字足せよw
エディタがエラーになるまでひたすら一行かけよ。
それがなによりのソースだ。
そもそも何その質問の仕方。
釣りかよ。
0353デフォルトの名無しさん
2011/06/23(木) 18:42:47.64質問箱といいながらちょっと難しい質問になるとまったく答えられる人がいないんですね。
かなりがっかりしました。
0354デフォルトの名無しさん
2011/06/23(木) 18:53:14.130355デフォルトの名無しさん
2011/06/23(木) 19:26:54.97自分がわからないと難しく感じるものですよね。
うんうん、わかりますよ、その気持ち。
捨て台詞とか小学生っぽいことしたくなるの
そんな次期に良くある衝動ですよ。
心配しなくても多分治ります、大丈夫ですよ。
どうぞperlと人生を楽しんで下さい。
0356デフォルトの名無しさん
2011/06/23(木) 19:37:45.900357デフォルトの名無しさん
2011/06/23(木) 19:44:30.79> STRLEN は perl が扱えるどんな文字列のサイズも表現するのに
> 十分なだけの 大きさを持つことが保証されている整数型(Size_t,
> 普通は config.h で size_t として定義されています)。
ここから考えると、メモリ量で決まるだろうなあと思う。
実際に試していないし、他の条件があるかも知れないので、
>>350の挑戦に期待。
0358デフォルトの名無しさん
2011/06/23(木) 21:06:45.32アドレス空間の枯渇のほうが先に来るかもしれない
>>339は1文字が1バイトとは限らないという引っ掛けかと思ってた
ソースは utf8 で、cp932の文字コードが入っています。
my @mojilist = unpack('H*', encode('cp932','もじもじ'))
print @mojilist;
print pack('H*',@mojilist)
2行目で "82e082b682e082b6" となってるのですが、
3行目(実際は22行目です)の結果が
"\x{0082}" does not map to cp932 at moji.pl line 22.
:(省略)
"\x{00a0}" does not map to cp932 at moji.pl line 22.
\x{0082}a\x{0082}¶\x{0082}a\x{0082}¶\x{00a0}
のようになります。
0360デフォルトの名無しさん
2011/06/23(木) 22:12:33.66一番現実的な意味で完璧なものってなんでしょうか?
日本語以外も含まれます。
0361デフォルトの名無しさん
2011/06/23(木) 22:54:21.68windows環境です
opendir(D,$aaa);
@files = readdir(D);
foreach $file(@files){
if(-d $file){
print "ディレクトリ=$file<BR>";
}
if(-f $file){
print "ファイル=$file<BR>";
}
}
closedir(D);
windowsでも分けて表示できる方法ってありますか?
できればモジュールは使わないでできる方がいいです。
0363デフォルトの名無しさん
2011/06/23(木) 22:58:44.18http://perldoc.jp/func/readdir
0364デフォルトの名無しさん
2011/06/24(金) 01:23:52.48utf8 -> cp932 -> hexdata -> cp932 -> utf8
この最後のutf8に変換が抜けてるのでは。
0365デフォルトの名無しさん
2011/06/24(金) 02:00:07.670366デフォルトの名無しさん
2011/06/24(金) 02:29:49.53エクスプローラのフォルダのプロパティからも、attrib コマンドでも ReadOnly の属性が外れない。。。
ヒントありがとうございました。
UTF8フラグ付きに戻す作業が必要でしたm(_ _)m
------
use strict;
use utf8;
use Encode;
binmode STDERR, ":encoding(cp932)";
binmode STDIN, ":encoding(cp932)";
binmode STDOUT, ":encoding(cp932)";
my $sjiscode = unpack('H*', encode('cp932','もじ'));
print $sjiscode,"\n"; # "82e082b6"
my $text = pack('H*',$sjiscode);
print decode('shiftjis', $text);
0368デフォルトの名無しさん
2011/06/25(土) 15:21:47.21Perl内で編集処理してまたfireofxにて編集した内容を再表示させることって可能ですかね?
可能だったらやり方かもしくはそのようなことを詳しく書いてあるようなサイトを教えてもらえるとありがたいです
0369デフォルトの名無しさん
2011/06/25(土) 15:28:58.170370デフォルトの名無しさん
2011/06/25(土) 16:05:18.290371デフォルトの名無しさん
2011/06/25(土) 16:20:25.110372デフォルトの名無しさん
2011/06/25(土) 16:44:00.69空気嫁よな。
0373デフォルトの名無しさん
2011/06/25(土) 17:06:11.850374デフォルトの名無しさん
2011/06/25(土) 21:38:44.17可能。
webサーバを用意して、firefoxにperlから
URLとしてブックマークレットを投げて
そこでajaxで中身をサーバに送りつけれ。
0375デフォルトの名無しさん
2011/06/25(土) 21:51:59.57http://search.cpan.org/dist/WWW-Mechanize-Firefox/
0376デフォルトの名無しさん
2011/06/25(土) 22:18:56.68メールが送れていません。どこが間違ってますかね
http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi?mode=downld&no=4398
0377デフォルトの名無しさん
2011/06/25(土) 22:19:42.21あれを参考にしていいのは
中学生まで。
0378デフォルトの名無しさん
2011/06/25(土) 22:20:41.00まだ使ってるのか。
標準モジュール使えよ。
0379デフォルトの名無しさん
2011/06/25(土) 23:03:05.720380デフォルトの名無しさん
2011/06/26(日) 01:30:59.36解決法がわからないのに糞レスしてるお前らにワロタwwwww
無論俺も知らないがw
0381デフォルトの名無しさん
2011/06/26(日) 01:39:24.420382デフォルトの名無しさん
2011/06/26(日) 01:41:38.98Jcode関係外して、アルファベットだけでも送れます?
0384デフォルトの名無しさん
2011/06/26(日) 10:20:57.95POP before SMTPはせんで良いの?
0385デフォルトの名無しさん
2011/06/26(日) 13:16:36.55>>375
どうもありがとうございます
0386デフォルトの名無しさん
2011/06/26(日) 15:19:33.68しない。対応してる送信ソフトなんて存在しないし。
0387デフォルトの名無しさん
2011/06/26(日) 16:34:53.01はぁ?
0388デフォルトの名無しさん
2011/06/26(日) 17:20:53.37何がはぁだよ。具体的反論をしろ。
0389デフォルトの名無しさん
2011/06/26(日) 17:29:06.75おまえこそ意味不明なこと言ってるんじゃねえよ。
0390デフォルトの名無しさん
2011/06/26(日) 21:40:14.38はぁ?
0391デフォルトの名無しさん
2011/06/26(日) 22:01:38.06はぁ?じゃねえよカス
0392デフォルトの名無しさん
2011/06/26(日) 22:25:35.740393デフォルトの名無しさん
2011/06/26(日) 22:55:58.96うちのMTAではそのコードで送信でけましたよ。
送れない原因についてはPBSもそうだろうしSMTP-AUTH必須なのかもしれないし、
OP25B対策されててそのアプリからMTAをつつけてない可能性もありますし、
もしくはあなたが構築したかもしれないMTAが機能してないって可能性もあるし、
原因は山ほど想定されるのでよくわからんという事だと思われます。
0394392
2011/06/26(日) 23:03:22.10続きです。
コンストラクタを以下のようにして
$smtp = Net::SMTP->new($mailhost, Debug => 1);
送信してみるのが最初じゃないでしょうか。
SMTPの応答とmtaのログ見て、原因を切り分けたらまたここに質問すればいいですし。
もしかしたらperlの質問ではなくなるかもしれないですしね。
あとみんなが言ってるようにJcodeじゃなくEncodeつかったほうがいいですし、
Net::SMTPじゃなくEmail::Senderとか使ったほうがいいですし、
そもそもuse strict;とuse warnings;付けないのは、やめたほうがいいですよ。
0395デフォルトの名無しさん
2011/06/26(日) 23:10:02.910396デフォルトの名無しさん
2011/06/27(月) 00:24:38.13Perl忍者が最近来てません どうしたんですか?
0397デフォルトの名無しさん
2011/06/27(月) 01:03:38.72DBI->connect("dbi:ODBC:Driver=PostgreSQL ANSI", "postgres", "postgres");
とやっても動きません。
DBI connect('Driver=PostgreSQL ANSI','postgres',...) failed: [unixODBC][Driver Manager]Data source name not found, and no default driver specified (SQL-IM002)(DBD: db_login/SQLConnect err=-1) at ./test.pl line 7
同じセッションからDSNを指定してやると動きます。(PGSQLがDSN)
DBI->connect("dbi:ODBC:PGSQL", "postgres", "postgres");
odbcinst.iniにはPostgreSQL ANSIで登録されているのですが、あとなにか設定が必要なのでしょうか?
0398デフォルトの名無しさん
2011/06/27(月) 07:33:43.98就職できたんだろ
0399デフォルトの名無しさん
2011/06/27(月) 22:37:14.52glob が 3TB HDDでフリーズする… orz
同じスクリプトで 2TB HDD では動くんだけどなぁ。
@filelist = <*.*> もフリーズするし、んがー… 寝ろ… オヤシミ
あ、フリーズと言っても CTRL+C でコマンドラインに戻れます。
0401デフォルトの名無しさん
2011/06/28(火) 02:12:58.040402デフォルトの名無しさん
2011/06/28(火) 11:49:02.230404デフォルトの名無しさん
2011/06/28(火) 21:10:39.50スレ違いの質問にはスルーか、速やかな誘導をお願いします。
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
0405デフォルトの名無しさん
2011/06/28(火) 21:11:10.600406デフォルトの名無しさん
2011/06/28(火) 23:12:29.39コードから明らかだからな。
わからないことがわからない状態で、他人に質問すべきではない。
0407デフォルトの名無しさん
2011/06/28(火) 23:22:08.13色んなことが分かる。
勝利したのはどっちかな?w
0408デフォルトの名無しさん
2011/06/29(水) 01:41:06.76んな愚劣なことを言っている限り、一生ダメなまんま終わるよ。
ググって行き当たりばったりでコピペしてたまたま動いたらOK、動かなかったら匿名掲示板で質問、
答えらしきもものをもらえば、なにやらわかった気になる。以下繰り返し。
なんたら忍者もそうだが、耳年増にはなれても、自分のオツムの足しにはまったくなっていない。
糞の役にも立たんゴミでオツムがいっぱいの人間ができあがる。
0409デフォルトの名無しさん
2011/06/29(水) 02:27:18.56無駄な時間を過ごすのであったw
0410デフォルトの名無しさん
2011/06/29(水) 07:08:07.960411uy ◆hi.ht/Isu2
2011/06/29(水) 07:33:20.60このスレはつまらん
0412デフォルトの名無しさん
2011/06/29(水) 10:19:35.05マジウケたわwどいつもこいつも、上から目線…
調べりゃ分かる事を書いてんのに、ググれの一言も無い始末。一々釣られて、勝手に厨房呼ばわりですか?
文章力はおろか、勝手に決めつけて考える力も無い様ですねwwwww
0413デフォルトの名無しさん
2011/06/29(水) 10:32:07.26何処縦?
0414デフォルトの名無しさん
2011/06/29(水) 10:52:03.90で指定して
>以降の文字を取得してるのですが、この>以降に/が入っているとその行を認識してくれません
対処法が分かる方いましたらお願いします
0415デフォルトの名無しさん
2011/06/29(水) 10:54:13.830416デフォルトの名無しさん
2011/06/29(水) 11:06:59.77見やすいように全角で書きます
(.*)の部分を/が入ってても無視しなくて、スペースがあってもスペースの手前までじゃなくて">"以降のその行全体を取得するにはどうしたらいいでしょうか
0417デフォルトの名無しさん
2011/06/29(水) 11:23:48.96if(/^(>[^\s]*)/)
でいいんじゃね?あと/が入ってても無視なんてされないよ。
0418デフォルトの名無しさん
2011/06/29(水) 11:24:26.04$_を使わずにちゃんと変数を使う。
>この>以降に/が入っていると・・・
んなこたぁない。問題はその他で起こっている。
0419デフォルトの名無しさん
2011/06/29(水) 11:52:03.91>>417
それでいくと
>AAA BBB CCC
>aaa b/b ccc
のAAAとaaaの部分だけしか得られませんでした。後ろのBとCのエリアもまとめて取得したいんです
>>418
元ファイルの/を別の単語に置き換えると問題なく動くんです(´・ω・)
0420デフォルトの名無しさん
2011/06/29(水) 12:03:25.00ふ〜ん、下記してもか?
#!/usr/bin/perl -w
$_='> awsd/ zxc';
print $1 if( /^>(.*)/ );
print "\n";
exit;
0421デフォルトの名無しさん
2011/06/29(水) 12:50:19.42勘違いしてた。 [^\s] を . に変えてやって。
0422デフォルトの名無しさん
2011/06/29(水) 13:21:23.29できたよー。
foreach('>AAA BBB CCC', '>aaa b/b ccc', 'aaa b'){
if ( /^>(.*)/ ) {
print $1, "\n";
}
}
0423デフォルトの名無しさん
2011/06/29(水) 14:06:44.39だからなんだよw
とっくに解決してる。
0425デフォルトの名無しさん
2011/06/29(水) 17:17:06.38>>414が何をどう勘違いしていたのか微妙に興味をそそられるな。
0426天使 ◆KOAgYBL/Xg
2011/06/29(水) 17:55:45.95荒らさせろよ
0427デフォルトの名無しさん
2011/06/29(水) 18:33:23.660428デフォルトの名無しさん
2011/06/30(木) 04:16:10.55過去に同じ疑問を持った方がいたようですが結局分からずじまい。
Perl演算子のオーバーロードと「ラクダの毛」の関係とは?
http://www.nishishi.com/blog/2006/05/perl_overload.html
さんざんググっても分からず。分かる人がいれば教えてほしいです。
0429デフォルトの名無しさん
2011/06/30(木) 05:16:31.74ラクダの毛は脱色・染色が難しいので
染めずにそのまま(の色で)使われるのが一般的らしい。
その性質と、実際にはoverloadされないPerlの代入演算子の性質とが
なんとなく関係ありそうな気がしなくもないけど…
どうなんでしょうね。
ttp://www.kilimnews.com/article/13122651.html
ttp://www.tajiri-y.co.jp/kisochisiki/tennensozai/syurui/kyameru.htm
ttp://www11.ocn.ne.jp/~pierrot/info3_bn/info3_bn38.htm
0430428
2011/06/30(木) 07:31:27.82その説明で納得できそうです。
欧米の知識人には常識とか
単に著者がラクダに馴染みの深い地域出身なのかも知れませんね。
すっかりPerlのラクダ本の方に引きずられてしまっていました•••。
それも意図した洒落た表現なのでしょう。
0431デフォルトの名無しさん
2011/06/30(木) 13:08:04.200432デフォルトの名無しさん
2011/06/30(木) 13:24:24.690433デフォルトの名無しさん
2011/06/30(木) 17:28:46.980434デフォルトの名無しさん
2011/06/30(木) 19:12:22.540435デフォルトの名無しさん
2011/06/30(木) 19:49:05.160436デフォルトの名無しさん
2011/06/30(木) 20:26:57.250437デフォルトの名無しさん
2011/06/30(木) 20:48:14.010438デフォルトの名無しさん
2011/06/30(木) 21:49:52.96http://hibari.2ch.net/test/read.cgi/prog/1258970886
0439デフォルトの名無しさん
2011/07/01(金) 00:17:34.440440デフォルトの名無しさん
2011/07/01(金) 14:43:23.42上記を実行すると
Hello world!
と表示されるのですが、
動作原理を教えてください。
0441デフォルトの名無しさん
2011/07/01(金) 15:11:12.07'(?{'
. ( '[[).[|`%,,/`[/[@$' ^ '+)@@/^(@@@@@,@),@' )
. '!"})'
);
'' =~ は空文字列に対する正規表現マッチ
(?{ ... }) はマッチしたときに ... をevalする拡張正規表現
'[[).[|`%,,/`[/[@$' ^ '+)@@/^(@@@@@,@),@' は2つの文字列の排他的論理和で、演算すると「print"Hello world」
全部合わせると '' =~ /(?{print"Hello world!"})/ とやってるのと同じこと
0442デフォルトの名無しさん
2011/07/01(金) 15:57:34.13ありがとー
理解できました
0443デフォルトの名無しさん
2011/07/01(金) 23:33:44.10FORMのenctypeがmultipart/form-dataで送信した場合
送信したデータをFORMデータ部分と画像データ部分などに
splitなどで分割していく場合もwinは\r\n区切り、UNIXは\n区切りなんでしょうか?
0444デフォルトの名無しさん
2011/07/01(金) 23:37:24.300445デフォルトの名無しさん
2011/07/02(土) 01:09:00.160446デフォルトの名無しさん
2011/07/02(土) 01:24:37.090447名無しさん@お腹いっぱい。
2011/07/02(土) 09:37:45.05、な。
0448デフォルトの名無しさん
2011/07/04(月) 01:08:20.820449デフォルトの名無しさん
2011/07/04(月) 03:13:02.52分解前のmultipartをまるごと書き換えにかかる回答はネタだと思いたい。
0450デフォルトの名無しさん
2011/07/04(月) 03:21:59.68そして\rや\nが途中に含まれている
バイナリデータを壊すんだw
ばかだよなwww
0451大天使 ◆uL5esZLBSE
2011/07/04(月) 12:01:33.62ゴミがなにいってんだか
0452デフォルトの名無しさん
2011/07/04(月) 12:14:43.630453デフォルトの名無しさん
2011/07/04(月) 12:33:45.71OSには関係ありません
0454デフォルトの名無しさん
2011/07/04(月) 12:35:28.69そう。じゃないと異なるOS間でやりとりできなくなっちゃうだろ。
詳しくはRFC2046あたり読め。
0455デフォルトの名無しさん
2011/07/04(月) 12:39:29.420456デフォルトの名無しさん
2011/07/04(月) 12:42:30.42もしくはpush pop shift unshift を調べろ
0457デフォルトの名無しさん
2011/07/04(月) 12:55:55.21http://perldoc.jp/docs/perl/5.10.0/perldata.pod#Subscripts
http://perldoc.jp/index/function の「実配列のための関数」
http://perldoc.perl.org/perlfaq4.html#Data:-Arrays
0458デフォルトの名無しさん
2011/07/04(月) 12:58:26.51\r\n でなく \x0D\x0A で、入力をバイナリとして正しく扱っていれば YES
0459デフォルトの名無しさん
2011/07/04(月) 16:21:07.36:rawで読み込めばいいんだけど:rawで開いたファイルに対して$line=<INPUT>で1行をちゃんと取れるかは不明
大丈夫だとは思うけどね。。。
0460デフォルトの名無しさん
2011/07/04(月) 22:32:48.11でもさ、Perl+メールで有名な
MIME::Toolsってメールをパースすると
\n に統一されるんだよな。
RFC違反。
0461デフォルトの名無しさん
2011/07/04(月) 23:20:40.70送信するときには\r\nになるから安心しろ
0462デフォルトの名無しさん
2011/07/04(月) 23:56:25.12ならねーよw
つーかMIME::Toolsには
送信機能はありません。
0463デフォルトの名無しさん
2011/07/05(火) 00:17:05.50というお前のコメントも矛盾だぜ?うんこ野郎w o(^-^)o
0464デフォルトの名無しさん
2011/07/05(火) 00:57:38.53あまり弱いモノいじめするな。かわいそうだろ
0465デフォルトの名無しさん
2011/07/05(火) 02:40:19.55MIME::Toolsは\nに変換する。
ここんところは間違ってないだろ。
0466デフォルトの名無しさん
2011/07/05(火) 02:42:32.730467デフォルトの名無しさん
2011/07/05(火) 02:49:43.59意味がわかららん。
あるライブラリにバグがあって、
それをライブラリ外で修正したからって
ライブラリにバグがあることに変わりはないだろ。
0468デフォルトの名無しさん
2011/07/05(火) 03:54:37.30メール送信時は別のモジュールを使うって事を知りえてるわけだ。
なのに 「送信するときには\r\nになるから安心しろ」 を否定してる時点でおかしいというワケ
これでキミが矛盾を察しない時点で小学生から国語を勉強しなおせ。
0469デフォルトの名無しさん
2011/07/05(火) 10:11:09.87「おれは間違ってない!」って言い張ってて
矛盾を指摘しても認めない人。
0470デフォルトの名無しさん
2011/07/05(火) 10:29:15.49つーか自分で言ってることの意味に気付いてないモン、
頭がおかしい
0471デフォルトの名無しさん
2011/07/05(火) 10:37:56.72>>463の時点でひどすぎる
0472デフォルトの名無しさん
2011/07/05(火) 10:41:58.830473デフォルトの名無しさん
2011/07/05(火) 10:52:22.960474デフォルトの名無しさん
2011/07/05(火) 11:29:54.680475デフォルトの名無しさん
2011/07/05(火) 11:41:07.43これはメモリに常駐させるようなのですが、終了(メモリから消去)させる場合は
どうすればよいのでしょうか?
時間がたてば勝手に終了するのでしょうか?
あと、cgiを更新した場合、speedycgiが自動で判別して、常駐を再起動するのでしょうか?
0476デフォルトの名無しさん
2011/07/05(火) 11:42:39.66ならねーよw
つーかspeedycgiには
常駐機能はありません。
0477デフォルトの名無しさん
2011/07/05(火) 11:56:50.240478デフォルトの名無しさん
2011/07/05(火) 12:10:12.60相変わらずお前ってバカだね
0479天使 ◆uL5esZLBSE
2011/07/05(火) 14:39:53.18はいゴミ死ね
0480デフォルトの名無しさん
2011/07/05(火) 19:04:58.80こうやって宣言したとき、
$temp->{'abc'} = '';
$temp->{'bcd'} = '';
|
$temp->{'ijk'} = '';
のような初期化を1行で済ませたいのですが、やり方を教えてください。
my $temp = {};
$temp = map { {$_ => ''} } qw/abc bcd cde def efg fgh ghi hij ijk/;
とやったら
Can't use string ("9") as a HASH ref while "strict refs" in use at test.pl line xxx.
とでました。
$temp->{qw/abc bcd cde def efg fgh ghi hij ijk/} = ''x9;
これだとエラーは出ませんが、初期化できませんでした。
0481デフォルトの名無しさん
2011/07/05(火) 19:40:12.97my $chr = 'a';
my %temp;
for(my $i=0;$i<=8;$i++){
my $chr2 = $chr;
$chr++;
my $str = ($chr2++).($chr2++).($chr2);
$temp{$str} = '';
}
0482デフォルトの名無しさん
2011/07/05(火) 19:41:38.27http://oreilly.com/catalog/9780596004927/
Programming Perl: Unmatched power for text processing and scripting
By Tom Christiansen, Larry Wall, Jon Orwant
Publisher: O'Reilly Media
Released: October 2011 (est.)
Pages: 1000 (est.)
0483デフォルトの名無しさん
2011/07/05(火) 19:41:55.19%$temp = map { $_ => '' } qw/abc bcd cde def efg fgh ghi hij ijk/;
か
@$temp{qw/abc bcd cde def efg fgh ghi hij ijk/} = ('') x 9;
だな。
0484481
2011/07/05(火) 19:43:06.240485デフォルトの名無しさん
2011/07/05(火) 19:43:25.529とか入ってないし。
0486デフォルトの名無しさん
2011/07/05(火) 19:56:24.07あ〜なるほど
代入される側に % が必要なわけか
>>485
自分も上の方がしっくりくるって思った
ありがとうございました m(_ _)m
0487デフォルトの名無しさん
2011/07/05(火) 20:01:35.97好みの問題ではあるけど、前者は $temp をデリファレンスするより代入値を無名ハッシュリファレンス化するほうが一般的では。my 宣言も同時にできるし。
my $temp = { map { $_ => '' } qw/abc bcd cde def efg fgh ghi hij ijk/ };
後者なら要素数はベタ書きじゃなくてキーを配列に入れといてそれ使うのがいいね。
my $temp;
my @keys = qw/abc bcd cde def efg fgh ghi hij ijk/;
@{$temp}{@keys} = ('') x @keys;
0489デフォルトの名無しさん
2011/07/05(火) 20:25:37.06$dir_size = -s $dir;で$dirにディレクトリを指定してもディレクトリの容量が取得できません
ファイルの容量なら取得できました。(windows環境です)
ディレクトリの中のファイル一覧やサブディレクトリ一覧を取得して
それぞれの容量を出して合計するしか方法はないんでしょうか?
0490デフォルトの名無しさん
2011/07/05(火) 20:39:49.570491デフォルトの名無しさん
2011/07/05(火) 20:44:04.39Windowsでもファイルたくさん入ったディレクトリのプロパティとか開くとその場で計算するから容量の数字がだんだん増えてくでしょ。
とはいえ、そういう面倒な部分を引き受けてくれるモジュールはあると思うよ。
Filesys::DiskUsage とか中身は見てないけどそれっぽい。
0492デフォルトの名無しさん
2011/07/05(火) 21:03:08.200493デフォルトの名無しさん
2011/07/05(火) 21:07:08.16perl -MFile::Find -le 'find sub { -f and $s += -s }, qw(.); print $s'
0494デフォルトの名無しさん
2011/07/05(火) 21:13:21.47\nに変換されてしまいます。バグですか?
MIME::Toolsにはバグと書いてあるようですが・・・
0495デフォルトの名無しさん
2011/07/05(火) 21:23:31.280496デフォルトの名無しさん
2011/07/05(火) 21:25:12.320497デフォルトの名無しさん
2011/07/05(火) 21:35:57.550498デフォルトの名無しさん
2011/07/05(火) 22:09:20.630499デフォルトの名無しさん
2011/07/05(火) 22:18:56.080500デフォルトの名無しさん
2011/07/05(火) 23:43:56.10"\n", with the assumption that the local mail agent will perform the
conversion from newline to CRLF when sending the mail. However, there
probably should be an option to output CRLF as per RFC 2045
内容は、
「今は、全てのエンコーダで"\n" 出力にしてますよーー。
だって、(あんたの使う)local mail agent がCRLFに変換持ってるっしょ?
しかしまあ、たぶんCRLF出力オプションを付けるべきなんだろーね。」
0501デフォルトの名無しさん
2011/07/06(水) 00:01:39.710502デフォルトの名無しさん
2011/07/06(水) 00:04:04.27真面目に訳そうかとも思ったけど、そのレベルの文章か?コレ
0503デフォルトの名無しさん
2011/07/06(水) 08:08:28.53それだとリンクを考慮してないからだぶって数えちゃうよ。
% ls -li
total 208
3665130 -rw-r--r-- 2 nobody nogroup 100000 Jul 6 07:50 x
3665131 lrwxrwxrwx 1 nobody nogroup 1 Jul 6 07:50 y -> x
3665130 -rw-r--r-- 2 nobody nogroup 100000 Jul 6 07:50 z
% perl -MFile::Find -le 'find sub { -f and $s += -s }, qw(.); print $s'
300000
% du
108 .
0504デフォルトの名無しさん
2011/07/06(水) 10:12:57.710505デフォルトの名無しさん
2011/07/06(水) 13:50:44.02perl上でURLにアクセスし、送られてくるcookieを保存して
そのcookieからある一つのcookieのみを返す。
というような動作は再現可能なのでしょうか。
0506デフォルトの名無しさん
2011/07/06(水) 14:17:02.34可。
可どころか優w
0507デフォルトの名無しさん
2011/07/06(水) 15:41:03.88返信ありがとうございます。
何か参考にできるサイトがあったら教えてください。
もしよろしければ、簡単に説明してもらえませんか?
0508デフォルトの名無しさん
2011/07/06(水) 16:20:14.95>>1 に良い事書いてあるぞ。
それ、webプログラムや。
0509デフォルトの名無しさん
2011/07/06(水) 16:56:04.34ふむ。そうなのですか。
区別ができないほど素人なもので・・・スレ汚しすみませんでした。
0510デフォルトの名無しさん
2011/07/06(水) 17:02:40.34cookie_jar から /HAP=FOXdayo[0-9a-f]+/ という文字列を集められたら
いいのかなという気がした。なんとなく。
0511デフォルトの名無しさん
2011/07/06(水) 22:34:51.70$i = 0;
$ii = 1;
while($i < 2){
while($ii < 3){
push(@aiueo, "$ii$i");
$ii++;
}
$i++;
}
print @aiueo;
これを実行しても@aiueoに1020しか入りません、
本当は1020のあとに1121が入るはずだと思うのですが、うまくいきません
簡単な質問ですみません。どなたか教えてください。
0512デフォルトの名無しさん
2011/07/06(水) 22:48:14.260513デフォルトの名無しさん
2011/07/06(水) 22:49:41.86for my $i (0 .. 1) {
for my $ii (1 .. 2) {
push @aiueo, $ii.$i;
}
}
print @aiueo
0514デフォルトの名無しさん
2011/07/06(水) 22:52:21.26my @aiueo = ();
for(my $i = 0; $i < 2; $i++){
for(my $j = 1; $j < 3; $j++){
push(@aiueo, "$j$i");
}
}
print @aiueo, "\n";
どうしても while を使いたいなら
$i++;
のあとに
$ii = 1;
と。
0515デフォルトの名無しさん
2011/07/07(木) 18:35:39.56$i=2;
while($N>=$i){
if($N % $i ==0){say"$N $i"; $N/=$i}
else{$i++}
}
これより早い素因数分解のプログラムってありますか?
0516デフォルトの名無しさん
2011/07/07(木) 18:46:57.02↓これに訂正します
else{$i!=2 ? $i+=2 : $i++}
ある奇数で割り切れるのかどうか実際に割り算をする以外に調べる方法はないでしょうか?
0517デフォルトの名無しさん
2011/07/07(木) 19:15:40.91$N=$ARGV[0];
$i=2;
while ($N >= $i**2) {
unless ($N % $i){ $N/=$i; print"$i " }
else { $i!=2 ? $i+=2 : $i++ }
}
print $N;
これで最後の無駄な割り算をカットできました
これ以上はもう無理です誰か助けてください
0518デフォルトの名無しさん
2011/07/07(木) 19:53:00.70でイチイチ二乗しているような気がする
0519デフォルトの名無しさん
2011/07/07(木) 20:02:32.02while( (1 x $tgt)=~/^(11+?)\1+$/ or ( print $tgt . "\n" and 0 ) ){
$tgt /= my $l = length $1 ;
print $l . "\n" ;
}
0520デフォルトの名無しさん
2011/07/07(木) 20:10:13.510521デフォルトの名無しさん
2011/07/08(金) 11:24:57.71Cwd::getcwd();
でカレントディレクトリを得た場合、帰ってくる文字コードはcp932ではないのでしょうか?
たとえば、カレントディレクトリがC:\成績表やC:\ソナタ
の場合
use Cwd;
print getcwd();
すると
C:/成績・ やC:/・ナタ
となってしまい、うまく得られません。どうしたらちゃんと得られるんでしょうか?
0522デフォルトの名無しさん
2011/07/08(金) 11:52:25.76アルゴリズムの意味がよく分かりません
なぜ^(11+?)\1+$これで素因数を求められるんでしょう・・・
>>520
factor速すぎます。ソース見てよく勉強しないといけないみたいですね
0523デフォルトの名無しさん
2011/07/08(金) 12:14:22.18素因数の数が3個の場合 ^((11+?)\1+)\2+$
素因数の数が4個の場合 ^(((11+?)\1+)\2+)\3+$
こういう書き方は出来ないんでしょうかね
0524デフォルトの名無しさん
2011/07/08(金) 12:35:33.02Cwdのバグが原因。2 バイト目が「\」になるWin使うときは要注意
このへんを参考に自分で直せ
http://miau.s9.xrea.com/blog/index.php?itemid=471
0525デフォルトの名無しさん
2011/07/08(金) 17:43:53.38いまperl書くとき使うIDEとしては、
Padre と Eclipse + EPIC のどっちがお勧めかな?
それともこれ以外の何か?
0526デフォルトの名無しさん
2011/07/08(金) 19:00:26.47秀丸おすすめ
0527デフォルトの名無しさん
2011/07/08(金) 19:42:16.55やっぱ、秀丸?
7年前も秀丸だったんだが、
最近は Java 書くときに Eclipse さんにおんぶに抱っこだったので、
perlも進化したかなーとおもってさ
情報thx
0528デフォルトの名無しさん
2011/07/08(金) 19:53:08.887年前に比べたらすごい違う
なんか、ガンプラの進化を見ているみたいに違う
0529デフォルトの名無しさん
2011/07/08(金) 20:25:05.97perl10以降(?)だと、出来なくもない。
my $tgt = 60 ;
while( ( 1 x $tgt ) =~ /^(?<i>(?<h>11+?)\k<h>+?)\k<i>+?$/ ){
print +( length $+{h} ) . "\n" ;
print +( (length $+{i} ) / ( length $+{h} ) ) . "\n" ;
last ;
}
くわしくは perldoc perlre して。
0530デフォルトの名無しさん
2011/07/08(金) 20:53:03.880531デフォルトの名無しさん
2011/07/08(金) 20:54:17.29言われるまでそのままperl5.10だと思い込んでた。
いやあ人間の脳ってすばらしい
存在しない情報を勝手に補完して読みやすくしてくれる
脳みそさまさまだ
0532デフォルトの名無しさん
2011/07/08(金) 21:08:05.34>>530
指摘thx.
0533デフォルトの名無しさん
2011/07/09(土) 14:02:30.38例えば次のスクリプトに対して、「/^hoge/」をスクリプトの中に直接書くのではなく
あらかじめ正規表現を記載したテキストファイルを別途用意しておいてそこから
読み込ませるようにはできないでしょうか?
どうぞよろしくお願いします。
☆こんなスクリプトがあるとして
my $str = 'hogehoge';
if ($str =~ /^hoge/) {
print "Match\n";
} else (
print "No match\n";
}
☆正規表現を書いたリストファイルを用意してそちらから読ませたい
# cat pattern.txt
^hoge
0534デフォルトの名無しさん
2011/07/09(土) 16:11:05.91できるか否かで答えれば、できる。
それ以上は何が分からないのか分からないから
>>2 の最初のサイトを一通り読めとしか言いようがない。
0535デフォルトの名無しさん
2011/07/09(土) 18:38:38.25$regexp=<H>;
close H;
chomp $regexp;
これでいいんでしょ?
0536デフォルトの名無しさん
2011/07/09(土) 20:04:14.160537デフォルトの名無しさん
2011/07/09(土) 20:23:47.150538デフォルトの名無しさん
2011/07/09(土) 20:38:27.570539デフォルトの名無しさん
2011/07/09(土) 21:20:18.92〜
}
って書いた時、ブロックから出たら $fh は勝手に閉じられるんでしょうか?
0540デフォルトの名無しさん
2011/07/09(土) 22:08:18.640541デフォルトの名無しさん
2011/07/09(土) 22:10:38.20open my $fh, '<', 'test.txt' or die $!;
とか書くからそもそもそういうifの使い方はしないな
0542デフォルトの名無しさん
2011/07/09(土) 22:23:26.480543デフォルトの名無しさん
2011/07/09(土) 22:44:02.53そのエラーがスクリプトから見たらクリティカルじゃない場合、
die で止めちゃうのはどうなんだろう?
って考えがあるのですが、、、
0544デフォルトの名無しさん
2011/07/09(土) 22:58:08.40どうトラップするかどう止めるかみたいなのは状況次第だと思う。
0545デフォルトの名無しさん
2011/07/10(日) 01:49:32.700546デフォルトの名無しさん
2011/07/10(日) 02:01:12.61dieしてもエラーログが見れなければだし
0547デフォルトの名無しさん
2011/07/10(日) 02:12:33.46親関数でトラップできる。
try 〜 catchと同じで、親関数にエラーを返すだけ。
親でトラップしていなければ、その親。
その親でもトラップしていなければ、その親。
どの親でもトラップしていないときは異常終了する。
だれもトラップしてないときに終了するだけであって、
本質的には親関数にエラーを返すもの。
0548デフォルトの名無しさん
2011/07/10(日) 07:39:47.59die は eval 中で挙動が変化するだけだぞ。
$SIG{__DIE__} でシグナルを掴まえて死ぬ前に特定挙動を
させる事が出来るが、基本的には eval 以外でトラップ
する事は出来んだろ。
eval { die "TRY:$!" };
if ( $@ ){ print "CATCH:$@" ;}
そもそも親関数って何だ?
0549533
2011/07/10(日) 09:32:04.17>>534 さん、>>535 さん、回答ありがとうございます。
参考になりました。変数の中に前もって正規表現のパターンを入れておけばいいのか。
534さん、書き方が曖昧だったようですね。文章ヘタですみません。今後気をつけます。
0550デフォルトの名無しさん
2011/07/10(日) 11:28:55.11だからevalでトラップするんだよ。
perl例外処理の基本だろ。
0551デフォルトの名無しさん
2011/07/10(日) 14:14:43.680552デフォルトの名無しさん
2011/07/10(日) 14:19:07.520553デフォルトの名無しさん
2011/07/10(日) 14:50:46.720554sugyan
2011/07/10(日) 15:01:50.450555デフォルトの名無しさん
2011/07/10(日) 15:05:22.25うぜえ。
0556デフォルトの名無しさん
2011/07/10(日) 16:39:32.35死ね
0557デフォルトの名無しさん
2011/07/10(日) 17:25:03.23ちゃんと用法容量を守ってお使いくださいってことだ
0558デフォルトの名無しさん
2011/07/10(日) 18:22:02.20returnでは1つの配列しか返せないんでしょうか?
2つの配列を戻り値として返す場合はどうすればいいんでしょうか?
0559デフォルトの名無しさん
2011/07/10(日) 18:54:21.370560デフォルトの名無しさん
2011/07/10(日) 19:01:23.050561デフォルトの名無しさん
2011/07/10(日) 19:02:51.40http://perldoc.jp/docs/perl/5.10.0/perlsub.pod#Pass32by32Reference
0562デフォルトの名無しさん
2011/07/10(日) 20:38:29.61perldoc誤読して自慢気に書き込んで指摘されたり、、、
忍者が名無しで書き込んでんのか?
0563デフォルトの名無しさん
2011/07/11(月) 02:03:23.21なぜエラートラップするだけのevalに
文字列を入れないといけないのか?
0564デフォルトの名無しさん
2011/07/11(月) 06:25:15.28いや、だから、文字列じゃないから大丈夫だろ、って言いたかったんだが…
0565デフォルトの名無しさん
2011/07/11(月) 08:52:11.51(@www1,@www2)=&func;
print "@www1,www2";
sub func{
local(@aaa)=("aaa1","aaa2","aaa3");
local(@bbb)=("bbb1","bbb2","bbbs");
return(@aaa,@bbb);
}
0566デフォルトの名無しさん
2011/07/11(月) 09:21:30.160567デフォルトの名無しさん
2011/07/11(月) 10:09:34.13荒らしの話はするな
0568デフォルトの名無しさん
2011/07/11(月) 11:33:10.89local は関数内でglobalを一時対比するだけのもの。
0569デフォルトの名無しさん
2011/07/11(月) 12:42:16.01表示される。
おわり。
0570デフォルトの名無しさん
2011/07/11(月) 12:49:37.90558と同じ質問じゃねーか。リファレンス使えって答は出てるだろ。
何も出力されないというのはおかしいけどな。改行問題?
0571デフォルトの名無しさん
2011/07/11(月) 13:14:53.08ActivePerl 5.8.9だけど表示された
0572デフォルトの名無しさん
2011/07/11(月) 14:06:22.640573デフォルトの名無しさん
2011/07/11(月) 14:10:36.68use warnings;
our @aaa;
our @bbb;
my (@www1, @www2)=&func;
print "@www1,www2";
sub func{
local @aaa = ("aaa1","aaa2","aaa3");
local @bbb = ("bbb1","bbb2","bbbs");
return(@aaa,@bbb);
}
0574デフォルトの名無しさん
2011/07/11(月) 14:16:56.570575デフォルトの名無しさん
2011/07/11(月) 18:13:04.16@www2は空でした
0576デフォルトの名無しさん
2011/07/11(月) 19:25:34.210577デフォルトの名無しさん
2011/07/11(月) 19:37:13.18> リストの中にリストがある場合には、自動的に展開されてしまいます。
> これは、外側のリストが評価されると、リストの個々の要素がリストコンテキストで
> 評価され、その結果のリスト値の個々の値が、元のリストの要素であるかのように
> 展開されるのです。
return(@aaa,@bbb);
http://perldoc.jp/docs/perl/5.10.0/perlsub.pod#Pass32by32Reference
> もし、配列やハッシュを二つ以上関数に渡したいとか関数から返したいと
> 考えていて、同時にそれらを完全な状態で扱いたいというのであれば、
> 明示的に参照渡しを使う必要があるでしょう。
> (@a, @b) = func(@c, @d);
> or
> (%a, %b) = func(%c, %d);
> これらの構文は単純にうまくいきません。 戻り値は @aや %aだけにセットされて、
> @b や %b はクリアされます。
my (@www1, @www2)=&func;
0578P erl忍者
2011/07/11(月) 20:48:59.14教えてください
0579デフォルトの名無しさん
2011/07/11(月) 21:51:46.19スライスチーズですか?
美味しそうですね。
0580デフォルトの名無しさん
2011/07/11(月) 23:35:51.960581デフォルトの名無しさん
2011/07/12(火) 03:28:49.860582デフォルトの名無しさん
2011/07/12(火) 04:11:54.600583デフォルトの名無しさん
2011/07/12(火) 04:57:13.570584デフォルトの名無しさん
2011/07/12(火) 13:13:44.250585デフォルトの名無しさん
2011/07/12(火) 15:19:18.160586デフォルトの名無しさん
2011/07/12(火) 15:24:21.830587デフォルトの名無しさん
2011/07/12(火) 15:32:38.33「これってトリビアになりませんかね?」
みたいにネタっぽく言ったほうがいいだろうな
0588デフォルトの名無しさん
2011/07/12(火) 15:51:57.18バグの「報告」なら実際に開発してる人たちにする他ないでしょ。当然、英語で。
もちろん報告するなら、本当にバグなのかどうか、報告済のバグでないか、最新開発版などでは直ってないか、などを十分に確かめてからだけど。
http://perldoc.perl.org/perlbug.html
0589デフォルトの名無しさん
2011/07/12(火) 17:26:28.59TOEIC600程度の英語でよければ俺が翻訳するから、ここに書いてみて
0590デフォルトの名無しさん
2011/07/12(火) 22:19:07.13一応、内容を書いておきます。
下記を実行すると 「Variable "$_" is not available」の警告が出るのはおかしくないか、ということです。
perldiag を見ても、この挙動が正しいのかバグなのか良くわからないのですが、どうでしょうか?
5.12 では発生しませんでした。
実行環境は Win Vista x64 ActivePerl 5.14.1.1401 x64 です。
use 5.14.0;
use warnings;
sub main { # main() の中でないと発生しない。
given(1){ # given の中でないと発生しない。
default {
func(sub{ my $s='hoge';$s =~ m/./; say $s });
# m// がないと発生しない。その他、s/// や say; でも発生する。
# my $_; するとでなくなる。
# func(sub{ my $_; my $s='hoge';$s =~ m/./; say $s });
}
}
}
sub func {
shift->();
}
main();
>588
英語か…。やはりそうなるのかな。
報告済みのバグというのは rt.cpan.org を調べればよいのでしょうか?
>589
ありがとう。報告するかどうかわからないのですが、それでもよければお願いします。
0591名無しさん@お腹いっぱい。
2011/07/12(火) 22:26:16.41日本語が分かる人が読んでくれるから大丈夫。
英語うんぬんを気にする必要は全くない。
0592デフォルトの名無しさん
2011/07/12(火) 22:29:35.560593デフォルトの名無しさん
2011/07/13(水) 07:30:51.21とりあえず訳しました。
間違いがあればよろしくです。>皆さん
I wonder if it is not valid to give the warning of 'Variable "$_" is not available' when running the following code.
I can't figure out whether it's a proper warning or just a bug even after reading the perldiag.
Let me know the reason if it is proper.
It doesn't take place on Perl 5.12.
My platform is Win Vista x64 ActivePerl 5.14.1.1401 x64.
use 5.14.0;
use warnings;
sub main { # take place just in main()
given(1){ # take place just in "given"
default {
func(sub{ my $s='hoge';$s =~ m/./; say $s });
# doesn't take place without "m//". Also does with "s///" and "say"
# my $_; doesn't with this declaration
# func(sub{ my $_; my $s='hoge';$s =~ m/./; say $s });
}
}
}
sub func {
shift->();
}
main();
0594デフォルトの名無しさん
2011/07/13(水) 09:34:24.89書いてあるんだからそれで十分。
0595デフォルトの名無しさん
2011/07/13(水) 13:34:43.20翻訳ありがとうございます。
RTを調べてみて同様のものがなかったので先ほど送りました。
報告の仕方を調べているうちに下記のようなスライドを見つけました。
http://www.slideshare.net/charsbar/practical-bug-reporting
次からは自分で送るようにしようと思います。
レスを頂いた方々、ありがとうございました。
0596デフォルトの名無しさん
2011/07/13(水) 17:10:30.340597デフォルトの名無しさん
2011/07/13(水) 17:18:49.45@AoA = (); がしたいのか @{$_} = () for @AoA; がしたいのか
0598デフォルトの名無しさん
2011/07/13(水) 17:38:01.19$a = 'ig' ;
s/unko/chinko/$a ;
ってやると2行目がエラーになんだけど
0599デフォルトの名無しさん
2011/07/13(水) 17:59:50.880600デフォルトの名無しさん
2011/07/13(水) 18:01:33.14my $global = $mod =~ tr/g//d;
my $pattern = qr/(?$mod)buffalo/;
my $replacement = 'ba-ro-';
$_ = 'Buffalo buffalo Buffalo buffalo';
if ($global) { s/$pattern/$replacement/g; }
else { s/$pattern/$replacement/; }
print;
0601デフォルトの名無しさん
2011/07/13(水) 18:08:38.800603デフォルトの名無しさん
2011/07/13(水) 20:30:01.69んだら、あんだ?婆
0604デフォルトの名無しさん
2011/07/13(水) 21:14:39.360605デフォルトの名無しさん
2011/07/13(水) 21:19:53.34多分、デフォルト変数(default variable)
0606デフォルトの名無しさん
2011/07/13(水) 22:03:06.97http://perldoc.perl.org/perlintro.html
The only one you need to know about for now is $_ which is the "default variable".
0607601
2011/07/14(木) 01:03:51.360608デフォルトの名無しさん
2011/07/16(土) 17:46:22.62SELECTにて一致した条件を表示するのに
while(@row = $sth->fetchrow_array) {
}
を使っているのですが、これだと全件表示されてしまいます。
例えば5件目〜10件目のみ表示するにはどのようにすれば良いのでしょうか
0609デフォルトの名無しさん
2011/07/16(土) 18:30:36.54/ \ /\ 5件目〜10件目 のみ見る
/ し (>) (<)\
| ∪ (__人__) J | ________
\ u `⌒´ / | | |
ノ \ | | |
____
/ \ ─\ チラッ
/ し (>) (●)\
| ∪ (__人__) J | ________
\ u `⌒´ / | | |
ノ \ | | |
____
/::::::─三三─\ 全件見えた
/:::::::: ( ○)三(○)\
|::::::::::::::::::::(__人__):::: | ________
\::::::::: |r┬-| / | | |
ノ:::::::::::: `ー'´ \ | | |
0610デフォルトの名無しさん
2011/07/16(土) 21:13:03.03SQLクエリの時点で弾く(LIMIT)か、
素直に全部読んでから、手作業で必要な部分だけ切り取る
0611デフォルトの名無しさん
2011/07/16(土) 23:40:09.46$str =~ m{ <body> ( [^ (?: </body>) ]* ) }xi;
これの問題のあるところは、[ ]に1文字ではなく複数文字を指定している点なのでしょうか?
また正しい正規表現はどのようになりますでしょうか、教えてください。
0612デフォルトの名無しさん
2011/07/16(土) 23:45:44.850613デフォルトの名無しさん
2011/07/17(日) 01:01:48.47$str = 'foo<span>bar<span>baz</span>quux</span>corge';
$str =~ m{<span>(.*?)</span>}is; # $1 = 'bar<span>baz';
http://perldoc.jp/docs/perl/5.10.1/perlfaq6.pod#How32do32I32match32XML44HTML44or32other32nasty44ugly32things32with32a32regex63
http://perldoc.jp/docs/perl/5.10.0/perlreref.pod#SEE32ALSO
http://www.din.or.jp/~ohzaki/regex.htm
0614デフォルトの名無しさん
2011/07/17(日) 04:19:26.04複数でてくるタグなら再帰的に生成すると。でもその場合はモジュール使おうと思います。
文字列の否定は否定先読みすればよかったんですね。
(!:はperldocみたけど判らなかったです。。。。
0615デフォルトの名無しさん
2011/07/20(水) 16:07:36.97具体的にはこんな手順のようです
http://blog.livedoor.jp/r_c_3/archives/50694668.html
0617デフォルトの名無しさん
2011/07/20(水) 23:01:31.56受け取り側ではpopを使って切り取って配列と変数に分けるしかないんでしょうか?
&func(@lines,$aaa);
sub func{
local($aaa2);
local(@lines2);
$aaa2 = $pop(@_);
@lines2 = @_;
}
0618デフォルトの名無しさん
2011/07/20(水) 23:07:22.230619デフォルトの名無しさん
2011/07/20(水) 23:15:18.27http://perldoc.jp/docs/perl/5.10.0/perlsub.pod#Pass32by32Reference
http://perldoc.jp/docs/perl/5.10.0/perlsub.pod#Prototypes
0620デフォルトの名無しさん
2011/07/20(水) 23:34:05.05それのどこに答えが書いてあるのか分からない
それと字が小さすぎて読みにくい
0621デフォルトの名無しさん
2011/07/20(水) 23:49:18.60& 付きサブルーチン使うな。
10年前からタイムスリップして来たのか?
sub func(\@$){
my @lines = @{$_[0]} ;
my $aaa = $_[1] ;
}
func @lines, $aaa ;
何れにせよリファレンス使おうが使うまいが、
func に渡された「リスト」の何らかの解析作業は必須。
=> それだったら普通にpopしてれば?
リファレンスも覚える気も無いんでしょ?
0622デフォルトの名無しさん
2011/07/21(木) 00:00:43.790623デフォルトの名無しさん
2011/07/21(木) 00:16:16.32古い参考書しか持ってないから
解析作業は省略して書かなかっただけ
知りたいのは配列と変数を受け取るときにpopして配列と変数に分けるしか方法がないのかってこと
0624デフォルトの名無しさん
2011/07/21(木) 00:45:51.17my も載ってなくて、&付しかないような参考書しか持ってないなら
悪いことは言わないので最近の書籍を買いなおした方が良い。
自力で検索して学ぼうにも下地となる知識が古すぎて不都合が多いと思う。
0625デフォルトの名無しさん
2011/07/21(木) 01:21:53.06use strict;
use warnings;
my @array = qw/LOVE LIKE NG GOOD NEW OLD/;
my $scalar = "電子レンジ";
testfunc(\@array, $scalar);
exit(0);
sub testfunc{
my $array = shift;
my $scalar = shift;
print $array->[1];
print $scalar;
}
#配列のコピーを作りたいなら
# my $array = shift;
# my @array = @{$array};
0626デフォルトの名無しさん
2011/07/21(木) 03:49:58.07スカラー1コと配列1コ渡すだけでいいんなら
スカラー、配列、の順に渡せば済む話だろ
その順に渡せない事情でもあるのか?
あと参考書古すぎるなら新しいの買えは同意だ
0627デフォルトの名無しさん
2011/07/21(木) 04:30:20.77おいらもスカラー先に渡せばいいじゃんって思った
0629デフォルトの名無しさん
2011/07/21(木) 05:13:42.10何のために?
0630デフォルトの名無しさん
2011/07/21(木) 05:45:48.55さあ…ね、詳しくは本人にしかわからない
push()を自作データ用にちょっと改変したような動作が欲しいのかも
まあ、リスト自体を渡す方法もどっかにズバリの内容が載ってた気がするんだが
0631デフォルトの名無しさん
2011/07/21(木) 06:54:02.79>解析作業は省略して書かなかっただけ
意味が通じてなかったみたいだな。
local($aaa2);
local(@lines2);
$aaa2 = $pop(@_);
@lines2 = @_;
これのことを「解析作業」と書いたんだ。
俺のコードだと
my @lines = @{$_[0]} ;
my $aaa = $_[1] ;
0632デフォルトの名無しさん
2011/07/21(木) 07:28:58.04> push()を自作データ用にちょっと改変したような動作が欲しいのかも
エスパー乙
0633デフォルトの名無しさん
2011/07/21(木) 08:31:03.49sub func{
my ($aaa2, @lines2) = (pop, @_);
}
0634デフォルトの名無しさん
2011/07/21(木) 11:51:39.73なにこれ
0635デフォルトの名無しさん
2011/07/21(木) 12:14:36.05pop の引数を省略すると @_ が対象になるので、@_ を pop して $aaa2 に代入、@_ の残りが @lines2 に代入される。
0636デフォルトの名無しさん
2011/07/21(木) 13:08:19.30スカラー、配列の順に渡しても
@_は(スカラー、配列)となってしまうので
$_[0]はスカラー、$_[1]は配列の先頭要素のみになっちゃうだろ?
0637デフォルトの名無しさん
2011/07/21(木) 13:28:41.66sub func{ ($scalar, @array) = @_ }
func( $s, @a )
ってことが言いたいんだろ
0638デフォルトの名無しさん
2011/07/21(木) 13:35:59.910639デフォルトの名無しさん
2011/07/21(木) 13:52:12.19なんだそりゃ。フツーこうだろ。
sub func {
my ($scalar, @array) = @_;
}
0640デフォルトの名無しさん
2011/07/21(木) 16:15:07.290641デフォルトの名無しさん
2011/07/21(木) 16:27:36.60配列にスカラを追加したい
こうゆう関数を作った場合は配列を先に渡したいよね
使い易さを考えないボンクラ大杉だろ
0642デフォルトの名無しさん
2011/07/21(木) 16:38:30.49これまでのレスを見る限り、そんな感じだ。
0643デフォルトの名無しさん
2011/07/21(木) 17:16:53.33func(@list, $scalar); で呼び出したい >>621
リファレンスを理解したくない >>626 >>637
単に短く書きたい >>633
Perl忍者が引っ掻き回してる予感。
0644デフォルトの名無しさん
2011/07/21(木) 17:21:24.49Perl忍者はそんな、まじめに質問しないだろ
0645デフォルトの名無しさん
2011/07/22(金) 00:27:33.34sub func{ my ( $aaa2, @lines2 ) = ((splice @_, -1 ), @_ ); }
sub func{ my ( $aaa2, @lines2 ) = @_[-1,0..$#_-1] ; }
既に書いてあるプロトタイプ利用する方法。
etc...
∴ 答 = "いいえ。他の手段で仕分ける方法もありますが?"
0646デフォルトの名無しさん
2011/07/22(金) 08:13:45.72> リファレンスを理解したくない >>626 >>637
リファレンスを理解したくないんじゃなくて、
リファレンス使うまでもなくこう書けば済むんじゃない、って話をしてるんだ。
理解力の足りん奴だ。
0647デフォルトの名無しさん
2011/07/22(金) 08:48:23.60「(>>617が)リファレンスを理解したくない(なら)>>626 >>637」
としか読めない
0648デフォルトの名無しさん
2011/07/22(金) 12:44:58.050649デフォルトの名無しさん
2011/07/23(土) 13:12:56.00$s = "\.\.\.";
@www = split($s,$str);
print"www0=$www[0],$www1=$www[1],www2=$www[2]";
としても配列は何も表示されないけど
$s='\.\.\.';とするとなぜか配列が表示されます
これはどうしてですか?
0650デフォルトの名無しさん
2011/07/23(土) 13:17:34.110651デフォルトの名無しさん
2011/07/23(土) 13:52:47.57http://perldoc.jp/func/split
http://perldoc.jp/docs/perl/5.12.1/perlop.pod#Quote32and32Quote-like32Operators
ダブルクォート文字列中の \. は . なので $s = '...' と等価。
正規表現 /.../ は「任意の3文字」なので、
split '...', $str は空文字列6つから成るリストを作る。
[]aaa[]...[]bbb[]...[]ccc[]
split は通常末尾に連なる空フィールドを返さないので @www = ();
シングルクォート文字列中では \' と \\ 以外のエスケープは無視されるので $s = '\.\.\.' 。
正規表現 /\.\.\./ は「'.'が3文字」なので、
split '\.\.\.', $str は ('aaa', 'bbb', 'ccc') を返す。
0653デフォルトの名無しさん
2011/07/24(日) 11:37:17.41数値計算やグラフ作成はpython
こんな使い分けしてるんですが
全部perlでやってる方もいますか?
統一したほうが良い事もあるのでしょうか
0654デフォルトの名無しさん
2011/07/24(日) 11:53:19.200655デフォルトの名無しさん
2011/07/24(日) 12:03:14.340656デフォルトの名無しさん
2011/07/24(日) 15:51:08.78なにそれ?
ググったけどよくわからなかった
0657デフォルトの名無しさん
2011/07/24(日) 17:44:14.71好きなように使い分ければええんでないかい
0658デフォルトの名無しさん
2011/07/25(月) 17:33:18.050659デフォルトの名無しさん
2011/07/25(月) 17:38:44.490660デフォルトの名無しさん
2011/07/25(月) 18:14:07.12かっこうよく実装するにはどうしたらいいかな
0661デフォルトの名無しさん
2011/07/25(月) 23:03:05.43こんな感じでどう?
|ツ ヾ\{ (⌒\;;;;;;;;,, ,,,,;;;;;;;;;;:' //ミっ}
i 仆、\\_,ゝ、 \__ ____ //!シ /
{ 、{ `r‐-、/´,.\ \ー====f'" ,..r―r-、`゙ソノ レ'i }
、 Y ゝ、 \ \ \ ̄ {_ `==≠' /⌒)| ノ バイナリファイル A,B を
\| ( \ \ \ \ ゙=====≠ / |/
、 \ \ 丶、 \ =_ / { / ANDして Cに保存
人 \ \ ` ̄`゙ `ー-┘ |/
( {::ハ /\ \ } 実装完了
ハ!:::\! .:: \ }ヽ,
}::::\:::::\ \ /::;ノ
〈:::::::::ノ/ ̄\ |::ィ
0662デフォルトの名無しさん
2011/07/25(月) 23:28:17.01た、たしかにかっけぇ←
0663デフォルトの名無しさん
2011/07/26(火) 21:23:38.65sub make{
my $self = 'MAKEMOD';
bless {}, $self;
}
sub func{
my $self = shift;
〜
}
-------------------------------------
use TEST;
my $test = TEST->make;
$test->func();
このように new ではなく別名のコンストラクタでオブジェクト作って、
そのオブジェクトからメソッドを呼ぼうとしたら、そんな関数ねぇよって
エラーになりました。
コンストラクタは new でないと駄目なんでしょうか?
0664デフォルトの名無しさん
2011/07/26(火) 21:32:51.65package TEST 内なのに、コンストラクタで使う名前が MAKEMOD とか、
存在しないパッケージ名を指定してたのが原因でした。
0665デフォルトの名無しさん
2011/07/26(火) 22:40:19.24package 名の決め打ちは引数付きの時にトラぶるから
お勧めしない。
#!/usr/bin/env perl
package TEST;
sub make { my $self = 'TEST' ; bless { dat => shift }, $self }
sub echo {printf "%s\n", shift->{dat} ;}
1;
package TEST2;
sub new { bless { dat => pop }, shift }
sub echo {printf "%s\n", shift->{dat} ;}
1;
package main;
TEST-> make('hoge')->echo; # => 'TEST'
TEST2->new ('hoge')->echo; # => 'hoge'
1;
0666デフォルトの名無しさん
2011/07/26(火) 22:53:09.94どうやったらいいの?
0667デフォルトの名無しさん
2011/07/26(火) 23:07:24.32その質問はあまりに単純か、あるいはもっと深い意味があるのか分からんな
0668デフォルトの名無しさん
2011/07/26(火) 23:54:08.50パッケージ名->メソッド
で呼ばれた場合、第1引数にはオブジェクト名が渡るから、それを考慮しろ。
ってことで OK?
0669デフォルトの名無しさん
2011/07/27(水) 00:12:38.160670デフォルトの名無しさん
2011/07/27(水) 00:18:44.21$ command1
Mask Slot7 Valid
Mask Slot3 Valid
Mask Slot11 Valid
$
この出力をperlで処理して、slotの後ろの番号を取り出したいです。
ワンライナーでいろいろ書いてみたのですがうまくいきません。どうやって書けばいいですか?
やりたいのはこんな感じです。
$ command1 | perl XXXX
7
3
11
$
どうかよろしくお願いします。
環境はLinuxです。
0671デフォルトの名無しさん
2011/07/27(水) 00:25:55.36じゃだめか?
0672デフォルトの名無しさん
2011/07/27(水) 01:06:09.72ありがとうございました。
0673デフォルトの名無しさん
2011/07/27(水) 12:07:28.39$ command1
Mask Slot7 Valid
Mask Slot3 Valid
Mask Slot11 Valid
$
この出力をperlで処理して、slotの後ろの番号を取り出したがってる人が
いろいろワンライナーを書いてみたらしいですが、うまくいかなかったそうです。
でも、うまくいかないワンライナーなんて思いつきません。
どんな、ワンライナーを書くとうまくいかないのでしょうか?
0675デフォルトの名無しさん
2011/07/27(水) 14:59:57.500676デフォルトの名無しさん
2011/07/27(水) 15:48:52.75バイナリファイル A,B を ANDしてCに保存するPerlスクリプトをかっこうよく書け、
なんて夏休みの宿題に出すんだな。
0677デフォルトの名無しさん
2011/07/27(水) 15:52:32.440678デフォルトの名無しさん
2011/07/27(水) 16:10:39.790679デフォルトの名無しさん
2011/07/27(水) 16:48:20.000680デフォルトの名無しさん
2011/07/27(水) 17:00:18.090681デフォルトの名無しさん
2011/07/27(水) 17:17:21.27open my $fa, "<", "A" or die $!;
sysread $fa, my $aa, -s $fa;
close $fa;
open my $fb, "<", "B" or die $!;
sysread $fb, my $bb, -s $fb;
close $fb;
open my $fc, ">", "C" or die $!;
binmode $fc;
for my $i ( 0 .. length($aa) - 1 ) {
print {$fc} pack "C", ord(substr $aa, $i, 1) & ord(substr $bb, $i, 1);
}
close $fc;
0682デフォルトの名無しさん
2011/07/27(水) 17:26:58.92my $d1 = read_file('./file1', binmode => ':raw');
my $d2 = read_file('./file2', binmode => ':raw');
write_file('./out', {binmode => ':raw'}, $d1 & $d2);
0683デフォルトの名無しさん
2011/07/27(水) 17:58:45.87みたいにぶん回したほうがいいんじゃないのかな?って思うわけです。はい。
0684デフォルトの名無しさん
2011/07/27(水) 21:47:47.79うん。
0686デフォルトの名無しさん
2011/07/28(木) 02:00:48.770687デフォルトの名無しさん
2011/07/28(木) 06:20:00.170688デフォルトの名無しさん
2011/07/28(木) 08:39:38.25読むファイルが2つあるときはどう書くのがかっこいいんだろうか。
0690Perl忍者
2011/07/28(木) 14:58:37.61戻ります
うわああ!!!!!!!
0691660
2011/07/28(木) 15:11:40.64perlは奥が深いな
0692デフォルトの名無しさん
2011/07/28(木) 17:34:05.282つのファイルを同時に読むところ?
0693デフォルトの名無しさん
2011/07/28(木) 18:17:51.03my @fh;
foreach('./file1', './file2'){
open(my $fh, '<:raw', $_) or die $!;
push(@fh, $fh);
}
open(my $wfh, '>:raw', './out') or die $!;
LOOP: while(1){
my $data;
foreach(@fh){
my $length = read($_, my $buf, 8192);
defined $length or die $!;
$length or last LOOP;
$data = (defined $data ? $data & $buf : $buf);
}
print $wfh $data;
}
close($wfh);
foreach(@fh){
close($_);
}
0694デフォルトの名無しさん
2011/07/29(金) 09:13:15.79短い方に合わせるか、長い方に合わせる(後ろは0で補う)の
どっちかにするのが自然だとは思うのだけど。
0695デフォルトの名無しさん
2011/07/29(金) 09:32:44.06それにANDだけとは言わず他の演算もしてみたいよね
2つのファイルと言わず3つ4つのファイルもやってみたくなるのが普通だよね
ついでに汎用性がありそうだからcとかで高速な実装をしてみたくなるよね
0697デフォルトの名無しさん
2011/07/29(金) 11:16:49.18□■□■□ ■□□□■
□■□■□ ■□□□□
□□■□□ □■■■□
□■□■□ □□□□■
□■□■□ ■□□□■
■□□□■ □■■■□
0698デフォルトの名無しさん
2011/07/29(金) 16:19:04.76>2つのファイルと言わず3つ4つのファイルもやってみたくなるのが普通だよね
目的がさっぱり見当つかない・・・
んなことして何に使うんだ?
0699デフォルトの名無しさん
2011/07/29(金) 16:26:18.780700デフォルトの名無しさん
2011/07/29(金) 18:39:06.090701デフォルトの名無しさん
2011/07/30(土) 00:10:40.900702デフォルトの名無しさん
2011/07/31(日) 22:26:08.86例えば$str="AAA\nBBB\nCCC";の場合
$gyousuu = split(/\n/,$str);で(AAA,BBB,CCC)に分解されて3行と出ますが
$str="AAA\n\n\n\n\n";の場合splitしてもAAAにしか分解されないので
6行のはずなのに1行になってしまいます
0703デフォルトの名無しさん
2011/07/31(日) 22:42:50.48\n の数を数える。
http://perldoc.jp/docs/perl/5.10.1/perlfaq4.pod#How32can32I32count32the32number32of32occurrences32of32a32substring32within32a32string63
0704デフォルトの名無しさん
2011/07/31(日) 22:43:53.700705デフォルトの名無しさん
2011/08/01(月) 12:30:36.47$textarea = "AAA<BR>";の場合
$textarea = ~ s/<BR>/\n/g;で
テキストエリアではAAA改行となりますが
$textarea = "<BR>";の場合
$textarea =~s/<BR>/\n/g;で
テキストエリアの中は改行になっていません(カーソルが1つ下に下がりません)
そこで$textarea =~/<BR>/\r\n/g;にするとテキストエリアの中では改行になっていますが
これだとwindowsの場合だけですよね?
OSに関係なく上手く表示できるようにするにはどうすればいいんですか?
print "<TEXTAREA ROWS=100 COLS=100>$textarea</TEXTAREA>";
0706デフォルトの名無しさん
2011/08/01(月) 12:45:57.760707デフォルトの名無しさん
2011/08/01(月) 12:54:12.65Webサイト制作初心者用質問スレ part225
http://hibari.2ch.net/test/read.cgi/hp/1308415898/
(X)HTML/CSS/Dreamweaverの質問に優しく答えるスレ10
http://hibari.2ch.net/test/read.cgi/hp/1311271961/
0708デフォルトの名無しさん
2011/08/01(月) 18:15:09.37>>705で書いたHTMLのどこがおかしいの?
TEXTAREAにNAMEが設定されてないところか?
これは送信するわけじゃないからNAMEは省略した
0709デフォルトの名無しさん
2011/08/01(月) 19:20:31.85OSではなくブラウザごとに違う
0710デフォルトの名無しさん
2011/08/01(月) 19:41:56.35開始タグ直後の改行が無視されるのはHTML(SGML)の仕様。
web制作板の方が詳しい人が居るんじゃないのん。
0711デフォルトの名無しさん
2011/08/01(月) 20:23:33.45要素の機能に関する問題の以前に書き方を覚えろ。
あほかw
0713デフォルトの名無しさん
2011/08/02(火) 09:53:32.30アホはお前だろ・・・
0714デフォルトの名無しさん
2011/08/03(水) 01:41:51.160715デフォルトの名無しさん
2011/08/03(水) 01:48:38.47つーか、Perlと全然関係ないじゃん。
0716デフォルトの名無しさん
2011/08/03(水) 03:23:39.870717デフォルトの名無しさん
2011/08/03(水) 08:44:10.29そう思うなら「Perlについての質問箱」スレなんかわざわざ覗きに来んな。
0718デフォルトの名無しさん
2011/08/03(水) 09:07:42.10このHTMLのどこがおかしいのか解らない
0719デフォルトの名無しさん
2011/08/03(水) 09:48:36.20PerlはCGIのための言語じゃないけどな…
0720デフォルトの名無しさん
2011/08/03(水) 09:56:43.540721デフォルトの名無しさん
2011/08/03(水) 09:58:46.840722デフォルトの名無しさん
2011/08/03(水) 11:08:58.94むしろいまどきはワンライナー御用達で
CGIに使う方が古いというかアホ扱いだろ
0723デフォルトの名無しさん
2011/08/03(水) 11:13:11.65久しぶりにawksed使うとあまりの速さにビビる
0724デフォルトの名無しさん
2011/08/03(水) 11:49:30.010725デフォルトの名無しさん
2011/08/03(水) 11:50:29.18まだまだperlは現役だろ
0726デフォルトの名無しさん
2011/08/03(水) 11:54:57.48すくなくても先に俺が消える。
あとの世は知ったこっちゃない。
0727デフォルトの名無しさん
2011/08/03(水) 13:35:40.60現役だけど、新規案件で使うものじゃない
いや、使ってもいいんだけどメインにすべきじゃない
0728Perl忍者
2011/08/03(水) 16:26:57.05ばかだなこいつ
ほとんどPHPとかだけど
0729デフォルトの名無しさん
2011/08/03(水) 16:34:49.79黒川かえる vs はまちや
VVS vs ssig33
決戦が始まろうとしている
0730デフォルトの名無しさん
2011/08/03(水) 16:38:11.37危険度 ★★★★★★★★★★★★★★★★★
日本のクラッカー。別名かえる☆ちゃん。最近2世が誕生しパパになったらしい。
過去においてはNEWS23のコメンテーターとしてテレビ出演、また「コンピュータ悪のマニュアル」の編集を務めている。
近年ではYahooBBの顧客リスト流出事件に関与、首謀者として同じくクラッカーのBEAMZと共に頭角を現す。
YahooBB事件においての被害総額は100億円規模と目され、団体に対して与えたクラッキング事件の被害の大きさでは世界一。その割りに名前が知られていない。
0731デフォルトの名無しさん
2011/08/03(水) 17:50:08.06そのHTMLを書いたファイルをlintにかけてみれば分かる。
0732デフォルトの名無しさん
2011/08/03(水) 19:04:35.98my @b = split(//, $a);
foreach my $w (@b) {
$ar[0][$i++] = $w;
}
これを、もうちょっと簡単にというか
(@ar[0]) = split(//, $a);
みたいな書き方(これはエラーでます)できないでしょうか?
0733デフォルトの名無しさん
2011/08/03(水) 19:15:49.63特殊変数$aを普通の変数としては(略
0734デフォルトの名無しさん
2011/08/03(水) 19:39:43.55感謝
でも静的には$ar[1]にも代入できるけど動的には無理なのか
そういや比較かなんかで使ってるんでしたっけ、$aと$b
0735デフォルトの名無しさん
2011/08/03(水) 20:05:53.55意味不明
my @dat = map { [ split //, $_ ] } qw ( 123 456 789 );
my @ar ;
for my $i ( 0 .. $#dat ){
$ar[0][$i++] = $dat[$i] ;
}
的な意味?
それとも
@{$ar[0]} = map { [ split //, $_ ] } qw ( 123 456 789 );
的な意味?
0736デフォルトの名無しさん
2011/08/03(水) 20:06:49.610737デフォルトの名無しさん
2011/08/03(水) 20:20:37.13COLSとROWSをダブルクオーテーションで囲んでないってことだろ
べつに囲まなくてもちゃんと表示される
0738デフォルトの名無しさん
2011/08/03(水) 21:05:55.38HTMLのバージョンにもよるが、
属性値が数値のみの場合は必ずしもダブルクォーテーションで囲わなくてもいい。
確かXHTMLでは不可で、HTML 4は可だったかな。
ってスレ違いじゃねーか。フザケンナ。
0739デフォルトの名無しさん
2011/08/03(水) 21:17:08.670740デフォルトの名無しさん
2011/08/03(水) 22:18:28.150741デフォルトの名無しさん
2011/08/03(水) 22:29:25.04use strict;
use warnings;
my $abc = 'love-like-ship';
my @ar = ();
push(@{$ar[0]}, split(//, $abc));
print join "\n", @{$ar[0]};
0742デフォルトの名無しさん
2011/08/03(水) 22:32:38.94どこか哀愁を漂わす漢の背中だ
0743デフォルトの名無しさん
2011/08/03(水) 23:04:34.02その方が専ブラであぼーんするのに便利だから
0744デフォルトの名無しさん
2011/08/03(水) 23:49:01.08かわいそうだろ
0745デフォルトの名無しさん
2011/08/04(木) 00:34:34.93存在自体がかわいそうなんだけどね
0746デフォルトの名無しさん
2011/08/04(木) 00:49:51.150747デフォルトの名無しさん
2011/08/04(木) 01:49:14.640748デフォルトの名無しさん
2011/08/04(木) 01:55:23.41どれ使っても同じことができるのはわかってるから。
もし将来一つに統一されると考えたとき
候補になりそうなのを教えて下さい。
0749デフォルトの名無しさん
2011/08/04(木) 02:06:02.56ラッパー自作して挟んどけば?
0750デフォルトの名無しさん
2011/08/04(木) 02:06:04.37POSIX
DateTime
0751デフォルトの名無しさん
2011/08/04(木) 02:27:00.23Time::Piece 今のところ標準モジュール
0752デフォルトの名無しさん
2011/08/04(木) 03:53:59.140753デフォルトの名無しさん
2011/08/04(木) 04:22:57.040754デフォルトの名無しさん
2011/08/04(木) 04:29:58.57依頼されたツールを誰かが作るスレ
http://hibari.2ch.net/test/read.cgi/php/1078997682/
金出すからスクリプト作ってよvol.1
http://hibari.2ch.net/test/read.cgi/php/1150508106/
0755デフォルトの名無しさん
2011/08/04(木) 08:56:27.350756デフォルトの名無しさん
2011/08/04(木) 11:40:58.29ここはperlスレだ。 無理やりにでもperlで解決してやれよ。
0757デフォルトの名無しさん
2011/08/04(木) 11:46:56.93perl -e 'system "find", ".", "-mtime", "+10m", "-exec", "rm", "{}", "+"'
0758デフォルトの名無しさん
2011/08/04(木) 12:09:11.190759デフォルトの名無しさん
2011/08/04(木) 12:57:59.96色々やってみたけどうまくいかない
0760デフォルトの名無しさん
2011/08/04(木) 13:15:01.44'>>' でオープンでいいんじゃないの?
知らんけど
0761デフォルトの名無しさん
2011/08/04(木) 13:26:55.28if( $q !~ m(^/) ) {
末尾に/がついていない場合の処理;
}
ってこと?
0762デフォルトの名無しさん
2011/08/04(木) 13:29:13.52if( $q !~ m(/$) ) { ... }
0763デフォルトの名無しさん
2011/08/04(木) 13:31:21.50じゃだめなの?
0764デフォルトの名無しさん
2011/08/04(木) 13:54:04.80perlが重いって数千行のデータベースをページ表示毎に
ソートでもしてるのか?
0765デフォルトの名無しさん
2011/08/04(木) 14:15:40.46うまくいきました。ありがとうございます
0766デフォルトの名無しさん
2011/08/04(木) 14:16:16.21File::Touch
0767デフォルトの名無しさん
2011/08/04(木) 14:31:38.16センスが無いよな。
0768デフォルトの名無しさん
2011/08/04(木) 14:41:23.43先生!センスのあるお手本を是非ここでひとつ。
0769デフォルトの名無しさん
2011/08/04(木) 15:11:27.19プロセス生成のコストは想像以上に高いわけだし
0770デフォルトの名無しさん
2011/08/04(木) 15:51:23.66どなたかお願いします。
0771デフォルトの名無しさん
2011/08/04(木) 16:02:00.47夏休みの宿題は自力でやらなきゃ。
0772デフォルトの名無しさん
2011/08/04(木) 17:31:51.66試してないけど、これでいける?
my $dir = "/foo/bar";
my $ten_min = 1 / 24 / 60 * 10;
unlink grep +(-C) < $ten_min, glob "$dir/*.*";
0773デフォルトの名無しさん
2011/08/04(木) 17:46:25.570774デフォルトの名無しさん
2011/08/04(木) 20:07:28.17$FORM{'データ'}というように
0775デフォルトの名無しさん
2011/08/04(木) 20:07:29.90utime undef, undef, $file1, $file2;
じゃだめかな。
ついでに
>>759
$q =~ s!(?<!/)\z!/!ms;
とか。
0776デフォルトの名無しさん
2011/08/04(木) 20:09:29.87使える。
コードをUTF-8で書いて use utf8 した方がいいと思う。
0777デフォルトの名無しさん
2011/08/04(木) 23:12:15.64"とか!とかを文字列で扱うためにエスケープ?しないといけない事を知りました
その作業量が多く大変困っています。簡単にする方法ないでしょうか!
↓いまひたすらこんなかんじ
print $fh " <\!-- コメントアウト(アドビのInstance等・・・) -->\n";
print $fh " <li><a href=\"\" target=\"_blank\"><img src=\"\" class=\"\" /></a></li>\n";
0778デフォルトの名無しさん
2011/08/05(金) 00:08:58.48プログラム始めて1週間ってことろか。
頑張れよw
0779デフォルトの名無しさん
2011/08/05(金) 00:25:07.40おう俺やっぱ初心者丸出しなのかな恥ずかしい
0780デフォルトの名無しさん
2011/08/05(金) 00:31:39.62とりあえず ! はエスケープしなくていい
変数展開やエスケープシーケンス(\nとか)を使う必要がないなら ' を使うか、
HTMLの引用符を ' にするとHTMLでは楽になる
簡単にする方法はあるけどPerlに慣れるまでは使わない方がいい
一応書いておくと
ダブルクォートは qq(<img src="") で、
シングルクォートは q(<img src="") で代用できる
他にもあるけど、クォート風演算子やヒアドキュメントで検索してくれ
>>779
みんな最初は初心者。がんばって
0781デフォルトの名無しさん
2011/08/05(金) 00:58:30.48便利なやり方が色々あるんですね
そもそもprintって少数行をやるものなのか・・・500行もprintでやってしまったよ・・・ハハ
最初からプロなんていないですよね、がんばりますありがとう〜
0782デフォルトの名無しさん
2011/08/05(金) 01:56:41.17500行wwww
最初と終わりを指定するだけで楽にできるよ
0783デフォルトの名無しさん
2011/08/05(金) 02:05:01.05〜HTML〜
EOM
だな
0784デフォルトの名無しさん
2011/08/05(金) 14:27:03.41だめ
0785デフォルトの名無しさん
2011/08/05(金) 15:23:19.54〜〜
EOT
みたいな変数代入もよく使うな。
0786デフォルトの名無しさん
2011/08/05(金) 17:13:35.73HTML::Templateでググれ
0787デフォルトの名無しさん
2011/08/05(金) 20:58:33.49http://gihyo.jp/dev/serial/01/modern-perl/0040
第41回 HTML::Template::Pro:テンプレートに極力コードを書かせたくないときは
http://gihyo.jp/dev/serial/01/modern-perl/0041
第42回 Template Toolkit:Perl製テンプレートエンジンのデファクトスタンダード
http://gihyo.jp/dev/serial/01/modern-perl/0042
第43回 Text::Xslate:永続環境に特化したテンプレートエンジン
http://gihyo.jp/dev/serial/01/modern-perl/0043
0788Perl忍者
2011/08/05(金) 21:40:50.03自分=うさぎ
お前ら=かめ
0789デフォルトの名無しさん
2011/08/05(金) 21:52:57.910790デフォルトの名無しさん
2011/08/06(土) 05:46:13.56print "Content-type: text/html; charset=Shift-JIS \n\n";
use Encode;
use LWP::UserAgent;
our $HOME_URL = 'http://www.scollabo.com/banban/jsindex/sample/sample_312.html';
our $USERNAME = 'USERNAME';
our $PASSWORD = 'PASSWORD';
my $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0');
#$ua->agent(qq(Mozilla/4.0 (compatible\; MSIE 8.0\; Windows NT 5.1\; Trident/4.0\; .NET CLR 2.0.50727\; .NET CLR 3.0.04506.30\; .NET CLR 3.0.04506.648)));
my $req = HTTP::Request->new(GET => $HOME_URL);
$req->authorization_basic($USERNAME, $PASSWORD);
$req->referer(qq(http://www.scollabo.com/banban/jsindex/sample/sample_312.html));
my $res = $ua->request($req);
$content = Encode::encode('JIS', $content);
print $res->content;
CGIでBASIC認証を自動化しようと考えています。
そのままいったら拒否されたのでAGENTCODEを変えようと思ったのですが・・・
AGENTCODEが表示されない・・・クマッタ
0791デフォルトの名無しさん
2011/08/06(土) 09:53:00.710792デフォルトの名無しさん
2011/08/06(土) 10:47:44.970793デフォルトの名無しさん
2011/08/06(土) 12:12:25.830794デフォルトの名無しさん
2011/08/06(土) 12:16:12.720795デフォルトの名無しさん
2011/08/06(土) 12:40:29.49レス削除依頼って何処にだせばいいんだろう
0796デフォルトの名無しさん
2011/08/06(土) 14:43:07.02心配だったら管理者に言って 〜/sample/ ディレクトリを移動してもらおう
次からは質問する前にまず寝て起きようぜ
0797デフォルトの名無しさん
2011/08/06(土) 20:34:03.22open(IN, "file.txt");
print <IN>;
close(IN);
のようにコード書いてたんですが、openの部分だけをcfopenと書き換えて
cfopenサブルーチン内でファイルの存在を確認した上でファイルを
オープンすることを考えてます。
そこで以下のようなcfopenサブルーチンを書いたのですが、
呼び出し時に、 open(*IN, "file.txt"); とファイルハンドルを
「*IN」と型グロブを使ってサブルーチン渡さないとダメのようですが
できるだけ元のコードを変えたくないので、「IN」のまま渡すような
cfopenを書く方法はないでしょうか?
sub cfopen
{
my $file = $_[1];
if (-e $file) {
open(CFP, $file);
$_[0] = *CFP;
return TRUE;
}
return FALSE;
}
0798デフォルトの名無しさん
2011/08/06(土) 21:00:27.590799デフォルトの名無しさん
2011/08/06(土) 21:40:16.73使うのとりあえず止めれば?
10年前の記法だぞ。
0800デフォルトの名無しさん
2011/08/06(土) 22:02:20.87回答ありがとうございます。
ググってみたら、いつのまにかグローバル変数ってことで非推奨になってたんですね。
素直に元のコードを書き直します。
0801デフォルトの名無しさん
2011/08/07(日) 00:33:23.630802デフォルトの名無しさん
2011/08/07(日) 00:52:35.35>>777はヒアドキュメントに満足することなく、テンプレートをちゃんと覚えたほうがいいよ。
テンプレートがあればエスケープしてくれるし、ヘッダーとか各ページ共通の案内リスト(って言えばいいのか)
も別ファイルとして管理できて、トップページではヘッダーファイルA、ログイン後のメンバーページは
ヘッダーファイルBを使うとか組み合わせも指定できる。
そもそもモジュールの入れ方を知らないのかもしれないけど、今はcpanmがあるから簡単だし、
>>787 のどれか使ってみればいいと思う。
あとhtmlの文字列をprintで直接作成するのも、たぶんダメなんだけど、変更するときに
正規表現とかで書き換えるのはダメだよ。バグ以前に難解になりすぎて目的達成できないだろうし。
HTML文字列ではなくてDOMを操作するモジュール使うべし。
0803デフォルトの名無しさん
2011/08/07(日) 12:40:43.10@lines1と@lines2は上からの行番号で対応できるようになっています。
そこで@lines1の条件にあった@lines2を取り出すには
このようにするしか方法はないんでしょうか?
$lineno = 0;
foreach(@lines){
@data = split(/<>/,$_);
if($data[1]>100){
push($cyuusyutu_lines1,$_);
push($cyuusyutu_lines2,$lines2[$lineno]);
}
$lineno++;
}
0804デフォルトの名無しさん
2011/08/07(日) 12:44:41.540805デフォルトの名無しさん
2011/08/07(日) 12:48:27.94push($cyuusyutu_lines1,$_); → push(@cyuusyutu_lines1,$_);
push($cyuusyutu_lines2,$lines2[$lineno]);→ push(@cyuusyutu_lines2,$lines2[$lineno]);
0806デフォルトの名無しさん
2011/08/07(日) 13:15:08.87my @data = split /<>/, $lines1[$lineno];
# ...
}
0807デフォルトの名無しさん
2011/08/07(日) 13:18:43.67例えば
use Math::BigRat;
my $x = Math::BigRat->new("1000");
my $y = Math::BigRat->new("3");
$x->bdiv($y);
print "$x\n";
とすると実行結果は1000/3なんですが、333にしたい。
JIS丸め希望(round_modeの'even'がそれ?)
0808デフォルトの名無しさん
2011/08/07(日) 13:41:49.25全く別のアプローチ
my @ids = grep { ( split /<>/, $lines1[$_] )[1] > 100 } 0 .. $#lines1 ;
my @ cyuusyutu_lines1 = @lines1[@ids] ;
my @ cyuusyutu_lines2 = @lines2[@ids] ;
0809デフォルトの名無しさん
2011/08/07(日) 13:57:16.50Math::BigRat は恣意的に分数に表示するためのモジュール。
使用目的が明かに違う。そんな風に使うべきじゃない。
どうしてもってんなら
print int eval $x
って手もある。 eval STR なんて非推奨もいいとこだけど。
0810デフォルトの名無しさん
2011/08/07(日) 13:59:19.68固定小数点数型ってないですよね?
0811デフォルトの名無しさん
2011/08/07(日) 14:06:03.260812デフォルトの名無しさん
2011/08/07(日) 14:28:44.79Perlを始め、変数に型がない言語って
大抵ないですよね。
0813デフォルトの名無しさん
2011/08/07(日) 14:50:52.170814デフォルトの名無しさん
2011/08/07(日) 15:03:36.35Perl => Math::BigFloat
Ruby => BigDecimal
Python => Decimal
0815デフォルトの名無しさん
2011/08/07(日) 15:09:30.32Math::BigFloat
は固定小数点数型を提供するもんじゃねーぞ。
浮動小数点誤差を防ぐもんでもねーし。
0816デフォルトの名無しさん
2011/08/07(日) 15:14:16.12固定小数点では無いが、精度をちゃんとすれば浮動小数点誤差は防げるぞ?
浮動小数点誤差に困ってるんだろ?
0817デフォルトの名無しさん
2011/08/07(日) 15:46:16.13お前、動的型言語をdisりたいだけだろ?
ウザイからこっちでやれよ
http://hibari.2ch.net/test/read.cgi/tech/1293264747
0818デフォルトの名無しさん
2011/08/07(日) 15:57:50.53Math::BigFloat->round_mode('even') で許容範囲なのか
汎用機屋さんが言う(BCDの)固定小数点数が意地でも欲しいのかよくわからない
0819デフォルトの名無しさん
2011/08/07(日) 16:27:13.18luaはないってサイトに書いてたけど実際のところ知らん
0820デフォルトの名無しさん
2011/08/07(日) 21:35:23.55プラグラムとしては実装出来て、問題なかったのですが、報告したところリーダーの人から
自動テストが出来ないとダメと言われています。
手動テストでは問題ないことは確認したのですが、自動テストする際に、
ReadKeyが受け取る値をテストのソースコードから操作するにはどうすればよいでしょうか?
0821デフォルトの名無しさん
2011/08/07(日) 21:42:57.430822807
2011/08/08(月) 02:02:51.46レス�dクス
evalメソッドを有難く使わしてもらおうかと
少なくとも今個人的に直面しているのがBigRatだけではにっちもさっちも行かないケースでして、
つまり整数の階乗じゃなくて有理数の階乗を計算する羽目になったわけで、
ストレートにΓ関数を計算しろというのは曰くごもっともですけども、
どっちにせよ有理数では話が済まないという、
0823デフォルトの名無しさん
2011/08/08(月) 10:04:12.790824デフォルトの名無しさん
2011/08/08(月) 13:11:45.09my $x = Math::BigRat->new("1000");
my $y = Math::BigRat->new("3");
$x /= $y;
$x = $x->as_float->ffround(0);
print "$x\n";
0825デフォルトの名無しさん
2011/08/08(月) 14:11:48.950826デフォルトの名無しさん
2011/08/09(火) 20:39:50.56どっちがいいですか?
0827デフォルトの名無しさん
2011/08/09(火) 21:27:06.01Cからなら…Perlかなぁ?
Cには無いワンライナーや、高機能なテキスト処理、
お手軽なリスト&ハッシュ処理の世界を知ってみては
Pythonは良くも悪くも万能言語なので、微妙に被る場面が出てくるかも知れない
でも、Cでやりたいことを取り敢えず速記するのには良いかもね
0828デフォルトの名無しさん
2011/08/09(火) 21:29:02.76Cの勉強が終わり…と言うが、Cに終わりは無いぜ
Cを言語として極めたと思うなら、Cで出来る各専門分野に手を出してみたら?
0829デフォルトの名無しさん
2011/08/09(火) 23:13:48.18open(IN,"<$FILE_PATH");
@lines = <IN>;
close(IN);
↑をページの最初だけファイルを読み読み込んで@linesに格納するのと
各サブフーチンごとに読み込んで@linesに格納するのでは
後者のほうが速度がかなり遅くなりますか?
速度がそれほど遅くならないのなら各サブルーチンごとに@linesに格納したいと思いますが
なるべく変数はローカル化したいので
0830デフォルトの名無しさん
2011/08/09(火) 23:30:25.33whileとかで1万回くらいループさせてどっちがどのくらい早いか比べてみたら
0831デフォルトの名無しさん
2011/08/09(火) 23:36:33.190832デフォルトの名無しさん
2011/08/10(水) 00:14:25.27ディスクキャッシュにのってしまえば気にならないほどかと
デバッグのことも考えて後者で良いと思う。
0833デフォルトの名無しさん
2011/08/10(水) 08:56:18.44コンパイル段階で型の不一致エラーを吐いてしまうだす。
x64
ちなみにDBIは通りました。
0834デフォルトの名無しさん
2011/08/10(水) 09:16:25.81Pythonがいい。
今さら廃れた言語をする必然性はない。
0835デフォルトの名無しさん
2011/08/10(水) 09:26:05.34そう思ってるならそんな廃れた言語の質問箱スレなんか覗きに来てんじゃねーよw
0836Perl忍者
2011/08/10(水) 09:40:52.060837デフォルトの名無しさん
2011/08/10(水) 10:10:51.42逆だろ
何度もクローズするってことは何度もフラッシュするってことだからな
0838デフォルトの名無しさん
2011/08/10(水) 11:25:48.18私は内容を変数に突っ込むかな。
サブルーチンごとにファイルオープンするとなると、
処理中にファイル内容が変更されることを考えないといけないし、面倒。
0839デフォルトの名無しさん
2011/08/10(水) 11:52:32.58それなら学ぶ必要はなさそう・・・
0840デフォルトの名無しさん
2011/08/10(水) 12:24:01.910841デフォルトの名無しさん
2011/08/10(水) 12:24:24.53今は元の鞘に戻ったという感じだよ
0842デフォルトの名無しさん
2011/08/10(水) 12:36:13.29ロシア語ってこれから廃れていく言語なのかい?
みたいな話だろそれ
0843デフォルトの名無しさん
2011/08/10(水) 17:35:17.67perl、pythonに限らず面白そうと思ったものはひととおりかじってみれば。
0844デフォルトの名無しさん
2011/08/10(水) 19:39:02.79ぐにゃぐにゃした言語ばかり独学でやっていると、変な手癖が直らなくなる。
0845デフォルトの名無しさん
2011/08/10(水) 19:48:12.580846デフォルトの名無しさん
2011/08/10(水) 20:14:35.42【Perl,PHP】LLバトルロワイヤル18【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1310082014/
0847デフォルトの名無しさん
2011/08/10(水) 23:05:29.42Cってぐにゃぐにゃしてるの?
0848デフォルトの名無しさん
2011/08/11(木) 00:09:39.50Pythonのことは他所にお任せする
ワンライナー、正規表現、文字列処理、リスト(とリスト処理)、ハッシュ(連想配列や辞書とも呼ばれる)辺りがお手軽に使えるのが利点だな
あとはメモリ管理が要らない…とまでは言わないが、Cに比べりゃ雲泥の差でテキトーに出来ることか
0849デフォルトの名無しさん
2011/08/11(木) 01:44:23.39サンプルから strict に書き直そうとする意欲が無ければ perl はおすすめ出来ないなぁ
0850デフォルトの名無しさん
2011/08/11(木) 01:49:30.580851デフォルトの名無しさん
2011/08/11(木) 08:40:01.21現在はMoose(Mouse)を使うのが標準なんですか?
0852デフォルトの名無しさん
2011/08/11(木) 08:43:25.73デフォルト変数、特殊変数、コンテキスト指向、単に名前空間のオブジェクト指向
0853デフォルトの名無しさん
2011/08/11(木) 15:48:08.33phythonがぐにゃぐにゃしてるんだよ・・・
0854デフォルトの名無しさん
2011/08/11(木) 16:12:19.71おっ 新しい言語だな。
0855デフォルトの名無しさん
2011/08/11(木) 16:21:11.140856デフォルトの名無しさん
2011/08/11(木) 16:29:58.380857デフォルトの名無しさん
2011/08/11(木) 16:32:46.20ほぼ意味はないけど
0858デフォルトの名無しさん
2011/08/11(木) 17:43:42.870859デフォルトの名無しさん
2011/08/11(木) 17:57:33.51文脈の区切りとしてはセミコロン最高!
0860デフォルトの名無しさん
2011/08/11(木) 18:32:00.08いや、perlでも全てのセミコロンを回避する方法はあるよ
0861デフォルトの名無しさん
2011/08/11(木) 19:13:39.64どうやるの
0862デフォルトの名無しさん
2011/08/11(木) 19:32:51.590863デフォルトの名無しさん
2011/08/11(木) 19:53:05.480864デフォルトの名無しさん
2011/08/11(木) 20:44:04.39use strict;
use warnings;
下だよな?もちろん。(<=この時点でKENTとは対極)
0865デフォルトの名無しさん
2011/08/11(木) 22:08:17.47いずれにしても答は馬鹿馬鹿しそうな予感。
もしくは単なるブラフか。
0866デフォルトの名無しさん
2011/08/11(木) 23:02:02.090867デフォルトの名無しさん
2011/08/11(木) 23:42:25.24>>863 の方がどうかしてると思うよ。
0868デフォルトの名無しさん
2011/08/11(木) 23:49:41.680869デフォルトの名無しさん
2011/08/12(金) 00:16:07.35use strict, use warnings 「しなくても」
{ use feature qw(say) and say "hello" } # => x
{ use feature qw(say) , say "hello" } # =>x
{ use feature qw(say) }{ say "hello" } # =>x
pragma系の呼び出し全滅じゃね?
BEGIN{ } あたりで対処も出来ねーし。
0870デフォルトの名無しさん
2011/08/12(金) 00:24:22.36BEGIN { require feature and feature->import('say') }
say "hello" and say "goodbye"
0871デフォルトの名無しさん
2011/08/12(金) 00:35:59.360872デフォルトの名無しさん
2011/08/12(金) 01:07:18.52現在はMoose(Mouse)を使うのが標準なんですか?
0873デフォルトの名無しさん
2011/08/12(金) 01:26:51.98そうムキにならなくても。
ハカーさま方はそうおっしゃってる方が多いです。
個人的にもお勧めです。
Moose/Mouseを利用したCPANモジュールも結構あるようです。
でもPerlディストリビューションに付いてくるいわゆる標準モジュールではありません。
0874デフォルトの名無しさん
2011/08/12(金) 01:40:35.33標準モジュールで似たようなのあるのですか?
0875デフォルトの名無しさん
2011/08/12(金) 07:14:57.84似たような…というと語弊があるけど、
OO支援という意味では Class::Struct というのがある。
0876デフォルトの名無しさん
2011/08/12(金) 11:27:05.96sub factorial {
if ($_[0] <= 1){
return $_[1]
}
else {
return factorial($_[0]-1, $_[0]*$_[1])
}
}
print factorial(10, 1)
0877デフォルトの名無しさん
2011/08/12(金) 11:44:06.92while (my($x, $y) = @_) {
...
}
とする手があるな。letっぽく。
0878デフォルトの名無しさん
2011/08/12(金) 12:36:05.67その条件は無くても大丈夫
while(my(...)=@_ or 1){ ... } continue {last}
if(my($x,$y)=@_ or 1) { ... }
for ([my($x,$y)=@_]) { ... } 等。
0879デフォルトの名無しさん
2011/08/12(金) 13:53:25.00given (my(…) = @_) {…}
0880デフォルトの名無しさん
2011/08/12(金) 21:48:53.100881デフォルトの名無しさん
2011/08/13(土) 00:36:09.36my $fact = sub {
my $n = shift;
if (n == 1) {
1;
}
else {
n * $fact->(n-1);
}
};
$fact->(5);
なぜこれは実行できないのでしょうか?
0882デフォルトの名無しさん
2011/08/13(土) 00:39:27.24でした。申し訳ございません。
0883デフォルトの名無しさん
2011/08/13(土) 00:49:24.250884デフォルトの名無しさん
2011/08/15(月) 00:17:14.75配列やハッシュにアクセスするための文字列と見て問題ないでしょうか?
0885デフォルトの名無しさん
2011/08/15(月) 01:15:41.75C みたいにアドレスを意識する必要が無いので、perl の場合は C の様に実体のあるアドレスという
解釈よりもリファレンスのユニーク ID って思った方が分かりやすいかも
0886デフォルトの名無しさん
2011/08/15(月) 01:28:08.42考え方が逆かな
「実体がある場所」がデータとして入ってて
それを文字列として表現するとそうなる、が正しい
例えば、文字列として出て来た表現をそのまま別の変数に文字列として入れても
その文字列からは元の変数のデータにはアクセス出来ない
0887デフォルトの名無しさん
2011/08/15(月) 01:40:24.09"" を overload してるクラスのインスタンスだとだめだけど
0888デフォルトの名無しさん
2011/08/16(火) 00:57:38.02データにアクセスできる特別な文字列が入るのではなく、実体がある場所のアドレスが入っていて
それをprintした場合は文字列として表現したものになるってことですか
これってリファレンスに関連したものだったんですね・・・
分かりやすかったです、ありがとうございました
0889デフォルトの名無しさん
2011/08/16(火) 02:38:03.25みたいな処理をmapを使ってやる方法はないでしょうか?
0890デフォルトの名無しさん
2011/08/16(火) 03:48:08.44map にする理由がわからん。
無理やり map で書くならこうか?
map{ push (@LIST, [ split /_/ ]) } (/ (\d+_\d+) /g);
0891Perl忍者
2011/08/16(火) 10:48:08.100892デフォルトの名無しさん
2011/08/16(火) 12:58:50.12my @list;
...
@list = (@list, sub{ map{ [splice(@_, 0, 2)] } (1..int(@_ / 2)) }->(/ (\d+)_(\d+) /g));
0893デフォルトの名無しさん
2011/08/16(火) 13:20:17.31返すからいらない苦労が必要なんだよなぁ。1回のマッチごとに無名配列でまとめて
くれれば便利だったのに。
0894デフォルトの名無しさん
2011/08/16(火) 13:34:06.12それこそ必要なら>>889みたいにスカラーコンテキストでイテレートするという指針で特に困ったことないし
0895デフォルトの名無しさん
2011/08/16(火) 15:33:57.20Regexp::Bind::global_bind_array()で、一応できるみたい。
ソースを見た感じ、自前で実装してもよさそうだけど。
しかし、$#+という表現は初めて見た。
0896デフォルトの名無しさん
2011/08/16(火) 18:08:39.672となってるところを>>895さんの教えてくれた$#+で置き換えるとそのものずばりの処理が完成しました
どうもありがとうございました
0897デフォルトの名無しさん
2011/08/16(火) 18:23:41.88これって仕様ですか?勝手に変換されるのはカンマだけですか?
0898デフォルトの名無しさん
2011/08/16(火) 18:28:30.35$_="1aA2bB3cC4dD";
@LIST = grep {$_} map {
if ($i++ % $#+ == $#+ -1) { $r=[@prev,$_]; @prev=(); $r }
else { push @prev, $_; undef }
} /(\d)(\C)(\C)/g;
print "[$_->[0], $_->[1], $_->[2]]\n" for @LIST;
0899デフォルトの名無しさん
2011/08/16(火) 18:33:32.720900デフォルトの名無しさん
2011/08/16(火) 18:49:47.92確認画面で$FORM_DATA{'text'} =~s/,/&sbquo;/g;でカンマを&sbquo;に変換して
それで書き込むでも$FORM_DATA{'text'} =~s/,/&sbquo;/g;で
カンマを&sbquo;として書き込もうとしているのですが
実際にファイルに書き込まれているのは‚;とかいうデータになっているんです
0901デフォルトの名無しさん
2011/08/16(火) 18:50:41.160902デフォルトの名無しさん
2011/08/16(火) 19:04:48.170903デフォルトの名無しさん
2011/08/16(火) 21:01:19.410904デフォルトの名無しさん
2011/08/16(火) 21:21:19.73本来の役割であるUnix系システムにおけるテキスト処理の用途では
むしろ以前にも増して必須言語なってるかと
「シェルスクリプトやAWKよりPerlで書いたほうが多くのUnix系環境で期待通り動く」
と言っても今や過言ではないと思う
0905デフォルトの名無しさん
2011/08/16(火) 21:28:16.170906デフォルトの名無しさん
2011/08/16(火) 22:59:21.25デフォルトインストールしただけでもPerlスクリプトがいくつかインスコされてると思うよ
ちなみにUbuntuでは「perl-base」パッケージを削除しようとすると
「この操作を行うと、システムが不安定になる可能性があります。続行しますか?」
と聞かれるほどにシステムに入り込んでるみたい
0907デフォルトの名無しさん
2011/08/16(火) 23:12:26.40foreach $nnn(@data){
$nnn = &henkan($nnn);
}
foreach (@data){
print "data=$_<br>";
}
sub henkan{
my($henkan_data) = $_[0];
$henkan_data = "30000";
return($henkan_data);
}
@dataが全部30000に置き換わっていました。
どうして置き換わってしまうんでしょうか?
$nnnの値を変えると@dataも変わってしまうのですか?
0908デフォルトの名無しさん
2011/08/16(火) 23:19:42.38その通り。
0909デフォルトの名無しさん
2011/08/16(火) 23:57:25.94まぁそもそもループとなる対象を、そのループ内で書き換えるのはお行儀が良いとはいえないかな。
0910デフォルトの名無しさん
2011/08/17(水) 00:12:21.44In other words, the
"foreach" loop index variable is an implicit alias for each item in the
list that you're looping over.
言い換えると、forループの帰納変数がループの対象となっているリスト中の
個々のアイテムに対する暗黙のエイリアスである。
帰納変数 => ここでは、$nnn
0911デフォルトの名無しさん
2011/08/17(水) 01:28:08.94どう書き換えるのが正しいの?
0912デフォルトの名無しさん
2011/08/17(水) 01:32:13.89henkanは30000を戻しているだけ。
だからこう書き換えられる。
@data=(100,200,300);
foreach $nnn(@data){
$nnn = 30000;
}
ループの変数は、@dataの中身をコピーしたのではなく、
エイリアス。同じものを指している。
だから書き換わる。
0913デフォルトの名無しさん
2011/08/17(水) 01:38:15.82foreach $nnn(@data) {
$mmm = &henkan($nnn);
}
>>912
いや、そこまで省略すると意図が解りにくいと思うぞ。
0914デフォルトの名無しさん
2011/08/17(水) 02:24:11.38え?
0915デフォルトの名無しさん
2011/08/17(水) 02:55:33.72henkan($nnn) とわざわざ書いたことで
「元の値を処理した結果を使いたい」って部分が明確になる。
即値を入れちゃうコードにするとその辺がちょっと曖昧になってしまうからね。
確かに意味としては=30000でも通じなくもないんだけど
「コードが多すぎる」って指摘は流石に的外れだと思うのよ。
ひとつ処理を噛ませたことで意味がより明確になってんだから、多すぎるってこたあない。
0916デフォルトの名無しさん
2011/08/17(水) 04:10:55.30その中で何してようが結局は30000返してるだけだろ。
0917デフォルトの名無しさん
2011/08/17(水) 06:17:57.58「コードが多すぎる」はまず sub henkan {} の中の話だな。なにがやりたいんだか意味不明。
0918デフォルトの名無しさん
2011/08/17(水) 06:36:08.13この場合明らかな初期化だから、ループを回す必然性すら無く
素直に、@data = (30000) x @data;あたりのコードにしとけ。
てのは別の話し。
0919デフォルトの名無しさん
2011/08/17(水) 13:14:15.10textで&lt;&gt;と入力すると<>になはならいんだな
0920デフォルトの名無しさん
2011/08/17(水) 13:21:42.600921デフォルトの名無しさん
2011/08/17(水) 14:01:01.74テキストで入力するのは全部変換されるよ
perlにはまったく関係が無い
0922デフォルトの名無しさん
2011/08/17(水) 14:24:30.17Webサイト制作初心者用質問スレ part225
http://hibari.2ch.net/test/read.cgi/hp/1308415898/
(X)HTML/CSS/Dreamweaverの質問に優しく答えるスレ10
http://hibari.2ch.net/test/read.cgi/hp/1311271961/
【総合】 Webprog板質問雑談スレッド 1
http://hibari.2ch.net/test/read.cgi/php/1131016915/
コレカラWebProgオ勉強シヨウトシテル香具師ガ雑談スルスレ
http://hibari.2ch.net/test/read.cgi/php/1049476765/
0923デフォルトの名無しさん
2011/08/17(水) 19:14:03.85明示的に undef すればいいと思ってたんですが、なにが起こっているのでしょうか。
ついでに hoge() より hoge2() の方が二倍のメモリを消費しているようです。
これも意味がわかりません。
なんだか気持ち悪いので、どなたか救って下さい。
hoge();
hoge2()
sleep();
sub hoge {
my $str = "";
$str .= " " for (1..10000000);
undef $str;
1;
}
sub hoge2 {
my $str = " " x 10000000;
undef $str;
1;
}
0925デフォルトの名無しさん
2011/08/17(水) 20:56:22.00perlがOSからmallocした領域をfreeせずに持ち続けてるだけで、
perlの変数的には解放されてるんだろう。
関数呼ぶ度にメモリが増えていくとかじゃないだろ?
0926デフォルトの名無しさん
2011/08/17(水) 21:30:15.55増えるよ
0927デフォルトの名無しさん
2011/08/17(水) 21:36:40.25Macってユーザーランドに開発版を採用してるの?
http://search.cpan.org/dist/perl/
0928デフォルトの名無しさん
2011/08/17(水) 22:51:04.660929デフォルトの名無しさん
2011/08/17(水) 23:22:59.500930デフォルトの名無しさん
2011/08/17(水) 23:33:11.54あんでふしてもじつめもりはかくほしたまま
0931デフォルトの名無しさん
2011/08/17(水) 23:42:26.600932デフォルトの名無しさん
2011/08/18(木) 00:02:27.560933デフォルトの名無しさん
2011/08/18(木) 00:05:56.76foreachよかmap使えmap。
その方が美しく書ける。
一時変数$nnnも無くて済む。
@dataHenkan = map{henkan($_)}@data;
それと一時変数の$nnnをそのループ内で書き換えるのはかなり気持ち悪い。
プログラミングの扇子無し。
0934デフォルトの名無しさん
2011/08/18(木) 02:02:16.27そういう話じゃねーだろ。
なんで中身読まないでレスしてんだ?
0935デフォルトの名無しさん
2011/08/18(木) 02:45:10.85だからじだいのながれとかかんけいなしにもだんもだんいってるのです
はいはいもだんもだん
0936デフォルトの名無しさん
2011/08/18(木) 03:04:36.56my $line = <FH>;
chomp $line;
my $integer = int($line);
とするのはバカな行為なんでしょうか?
$line が整数と分かっていた場合、例えば if($line == 5) とやってもいいものなんでしょうか?
0937デフォルトの名無しさん
2011/08/18(木) 03:11:47.340938デフォルトの名無しさん
2011/08/18(木) 10:40:07.95数値である限り通るけど
eval したり内容チェックしたりする方が身のためだよねってだけじゃない?
0939923
2011/08/18(木) 10:56:30.83あんでふしてもだめなら、メモリ解放する方法はないってことでしょうか。
リファレンスカウンタの状態まではわかりませんが。
あるいは、そもそもこんなメモリ圧迫コードは常に避けることができるってことでしょうか。
0940デフォルトの名無しさん
2011/08/18(木) 11:36:57.36外部データはevalしちゃだめよ
もし改変されててrmとかだったらどうすんの
0941デフォルトの名無しさん
2011/08/18(木) 14:52:36.37"`rm -rf /`"みたいな文字列に改変されてたらってことね
0942デフォルトの名無しさん
2011/08/18(木) 18:12:07.400943デフォルトの名無しさん
2011/08/18(木) 18:31:23.50Cで書きなよ
自分でメモリ管理するってええよ
0944デフォルトの名無しさん
2011/08/19(金) 00:20:26.36> それと一時変数の$nnnをそのループ内で書き換えるのはかなり気持ち悪い。
Perlでは常套手段。
おまえはもうPerl使うな。
0945デフォルトの名無しさん
2011/08/19(金) 00:27:46.65同じスクリプトを同じ起動の仕方で 5.10.0 で実行させたら @ARGV には入る。。。
0946デフォルトの名無しさん
2011/08/19(金) 02:39:04.19書きながら考えてるから最初にmapを書くと、
よっぽど簡単な処理のとき以外は、あとから処理が増えていくから
foreachに書き換えることが多い。
だからforeachで一通り書いて、mapに直せるところは直すって感じでやってるんだけど、
0947デフォルトの名無しさん
2011/08/19(金) 02:52:53.960948デフォルトの名無しさん
2011/08/19(金) 03:48:10.49速いとは限らないんだよな。
0949デフォルトの名無しさん
2011/08/19(金) 05:05:00.96迷う時には確かにforeachでエイヤで書いちゃうほうが楽なんだけどね。
省略した書き方で デフォルト変数 @_ に入ってくれない時があったけど同じようなもんかな
0951デフォルトの名無しさん
2011/08/19(金) 09:25:27.46あと特に配列がでかいときは foreach のほうが省メモリでよいと言いませんか。
0952デフォルトの名無しさん
2011/08/19(金) 12:42:55.11undef($h->{AA});
delete($h->{BB});
print scalar(keys %$h),"\n";
とすると1が返って、 $h は { AA=> undef } というhashになるが、
これが仕様?
undef($h->{AA}) と delete($h->{AA}) は違うのか…
0953デフォルトの名無しさん
2011/08/19(金) 13:08:14.580954デフォルトの名無しさん
2011/08/19(金) 13:09:51.57http://perldoc.jp/docs/perl/5.6.1/perlfaq4.pod#Whats32the32difference32between32delete32and32undef32with32hashes63
0955952
2011/08/19(金) 13:14:40.86どうもありがとう。
0956デフォルトの名無しさん
2011/08/19(金) 15:22:27.18データとして長さゼロの文字列や0を持つ場合は、
exists で存在有無を確認しながらブン回すこと。
0957945
2011/08/19(金) 16:00:31.28ってやると引数とれた
むぅ・・・
0958デフォルトの名無しさん
2011/08/19(金) 16:21:50.430959デフォルトの名無しさん
2011/08/19(金) 16:37:13.400960デフォルトの名無しさん
2011/08/19(金) 18:02:18.76$str="あああ&#12354;あああ";
if($str =~/[0-9]/g){
print "数値参照が含まれています";
}
これで行かないんです><
0961デフォルトの名無しさん
2011/08/19(金) 18:43:01.31こんなでも動く。
てか、webprog板で質問してる人じゃないのか。
use utf8;
my $str="あああああああ";
if($str =~/&#[0-9]/g){
print "Numeric character references INCLUDE !!!\n";
}
0962945
2011/08/19(金) 20:03:43.375.6.x (過去の実行環境) とか 5.10.0 (開発環境) の環境だと普通に出来る
でも 5.12.1 (現在の実行環境) だとダメ。
test.pl
print join "\n", @ARGV;
っていうスクリプトさえ 5.12.1 だと表示されない。けど perl test.pl ならいける。
5.12.1 を捨てろって言われればそれまでなんだけどw
0963デフォルトの名無しさん
2011/08/19(金) 21:21:19.40http://www.nntp.perl.org/group/perl.win32.vanilla/2011/02/msg284.html
同じように関連付けが path\to\perl.exe "%1" %* になってるべきとこが
path\to\perl.exe "%1" になってたりしないのかな?
0964945
2011/08/19(金) 23:12:46.91まさか関連付けとは思いもよらなかったorz
thx♪
0966デフォルトの名無しさん
2011/08/20(土) 15:52:19.15mapがメモリくうのって、
@A = map { $_ + 1 } @A;
みたいに、左辺と右辺で、同じ@Aを使用した場合だけじゃないかな。
0967デフォルトの名無しさん
2011/08/20(土) 17:10:16.57実際にコード作って動かしてみ?
同様に、
my @dat = 1 .. 10000000;
for( @dat ) {$_ = $_ * 2 } #1
@dat = map { $_ * 2 } @dat #2
#1 と #2 は top で見たかぎりはメモリ使用量に
顕著な差は見られなかったが?
0968デフォルトの名無しさん
2011/08/20(土) 17:16:33.48変数$aにx,y,zの3変数から求まる値を代入したいのです。
$a=val[x][y][z]みたいなイメージなんですが。
0969デフォルトの名無しさん
2011/08/20(土) 17:18:15.810970デフォルトの名無しさん
2011/08/20(土) 17:22:08.04同じHogeパッケージ内の関数func1を呼ぶには Hoge::func1( ) とする以外にありますか?
0971デフォルトの名無しさん
2011/08/20(土) 17:26:37.180972970
2011/08/20(土) 17:32:19.69すみません大切なこと書いてありませんでした。
実際のプログラムで呼ばれている関数名が exists なので
main::exists との区別をするための呼び出しをする必要があります。
0973デフォルトの名無しさん
2011/08/20(土) 17:36:34.260974970
2011/08/20(土) 18:05:42.18それって、パッケージ/モジュールの根幹を否定してません?
今のところ、Hoge::exists( arg ) って呼べば良いってのは分かってる(当たり前ですが)
同じパッケージ内なら別の呼び出し方あるのかなぁ、と思い質問しました。
0975デフォルトの名無しさん
2011/08/20(土) 18:17:13.99> @A = map { $_ + 1 } @A;
こんな場合は
map $_++, @A;
でよろしい。
0976デフォルトの名無しさん
2011/08/20(土) 18:21:32.05orz...
これは、697の補足で
>あ、usemymallocしてないから、perlのmallocね。
usemymallocしてないからsystemのmalloc使ってるって事でした。
毎回間違える。
>>968
実際に求めてるのはハッシュかもしれないから
perldoc perllol するか、perllolをググるかして下さい。
0977971
2011/08/20(土) 19:02:48.38それなら &exists( arg )
あと細かいこと言うと、区別しなきゃいけないのは main::exists とじゃなくて CORE::exists な。
ともあれ俺も>>973に同意。
予約語とかぶる名前を使うなんてのは、何の言語だろうとよほどの必要性がない限り避けるべきじゃないかね。
たとえば、同じパッケージ内からしか呼ばないのが前提の関数なら _exists とかにしたほうがいい。
オブジェクト指向モジュールでコア関数と同じ名前のメソッドを持ちたいってことはあるけど、でもそういう場合なら $self->exists で呼ぶだけだから関係ないな。
0978デフォルトの名無しさん
2011/08/20(土) 19:12:28.22否定してないよ。
functionとモジュールを混同するのよせば?
ちょっと例を挙げると、
perlのfunctionはオーバーライド出来ないものもある。
それに対しユーザーの関数は自由。
ttp://docstore.mik.ua/orelly/perl/cookbook/ch12_12.htm
0979デフォルトの名無しさん
2011/08/20(土) 19:15:07.580980デフォルトの名無しさん
2011/08/20(土) 19:26:12.52つーことで、perldoc perlsub より
>Finally, some built‐ins (e.g. "exists" or "grep") can’t be overridden.
0981デフォルトの名無しさん
2011/08/20(土) 20:10:58.800982デフォルトの名無しさん
2011/08/20(土) 20:18:28.61確認修正テンプレ貼っとくから立ててくれってならわかるが
0983デフォルトの名無しさん
2011/08/20(土) 20:25:13.57ところでこのスレ立てたとき過去スレ要らんぞと言われたけど切ってもよい?
自分でも貼ってて長いよなーと思った。
0984デフォルトの名無しさん
2011/08/20(土) 20:32:18.510985デフォルトの名無しさん
2011/08/20(土) 20:33:55.370986デフォルトの名無しさん
2011/08/20(土) 20:35:06.03立ててきます。
0987デフォルトの名無しさん
2011/08/20(土) 20:37:27.01Perlについての質問箱 48箱目
http://hibari.2ch.net/test/read.cgi/tech/1313840197/
0988デフォルトの名無しさん
2011/08/20(土) 20:38:31.04ムリダナ(・×・)
0989デフォルトの名無しさん
2011/08/20(土) 20:41:05.090990デフォルトの名無しさん
2011/08/20(土) 20:52:05.86ソースコードを読んで無限ループ部分を検出する正規表現を書けばいいジャン!!!
オレって甜菜!
0991985
2011/08/20(土) 21:06:11.44alarmを使ってみます。
0992デフォルトの名無しさん
2011/08/20(土) 21:41:47.79Smart::Commentsは、ループの進捗が把握出来て
何気に便利
と埋めついでにコメント。
0993デフォルトの名無しさん
2011/08/20(土) 22:00:56.10cのexit(0)みたいなのです。
0994デフォルトの名無しさん
2011/08/20(土) 22:08:35.04ミミ三ミ川ミミ川三ミ川ミ川ミ
ミ_川ミ_ミ川ミミミ_ミ_ミ_ミ三ミ_゛ミ
ミ_川三川三ミ ,.--"゛~~~~''´゛゛゛ミ_
ミミ川三ミ川ミミ_. 丶
ミ川ミ_リ川ミミ_川 |
ミ川ミリ川川ミ川 ‐、_‐rッ, i、 'ニi.ア,
川川リ,r' ミミ_川  ̄ .!i ヽ、 |
川川リ(,(, 6 リ川 ィ.___)) |
リ川川`ー |川!、 . _.i'I. |
川リ川 l))) -´=ェエ=,` /
リ川) 川  ̄ /
/人 ヽ ゛゛ー,,,,_...,ノ
/ ヽ 入´
0995デフォルトの名無しさん
2011/08/20(土) 22:16:38.520996デフォルトの名無しさん
2011/08/21(日) 02:28:28.68/イ : / ⌒ト | /| ∧ |: |、__,彡 { ⌒)
|/ . : : :| :/ | l |/ /⌒ト、:/∨:!: |/: : : ハ / ̄ ̄
(⌒ヽ レイ: : : : 〃⌒心八 │ ∨ | :/\| : | : : : : : |
ヽ ヽ、 -、:|: :|: イ{{. i_ノ:.:ハ \| |/ :|/ 厶L:_:」_:リ
\ `( }八八ハ. 弋いソ __ / ,: : : : : | はっじまるよー
/ ⌒ヽ ∨ : : :j(//) . ⌒¨¨~ヾ /: : / : リ
〈 ´ ̄) | : { _ (//) : : / : : |
' '⌒) }i| : :丶 「 } ∠/: : / : : : |
'. ノ´ {八 : :∧\ __ノ / : : : / : : : : 人|
} \厶:∨::> _,,,... ´/: :/| 〃丶:∧: :/
/〉 ∧ /{:::|「::::::::::::::::: ∧ // /|/::::::::::\|/
0997デフォルトの名無しさん
2011/08/21(日) 10:23:13.51埋めがてら。自己レスと975への反論レス。
# 当然 malloc に挙動が影響されるスクリプト
sub myps { print `ps ux $$`};
sub map_overwrite { my @dat = 1 .. 5000000 ; @dat = map { $_ + 1 } @dat ;}
sub map_overwrite2 { my @dat = 1 .. 5000000 ; map { $_ ++ } @dat ; }
sub map_new_array { my @dat = 1 .. 5000000 ; my @dat2 = map { $_ + 1 } @dat ; }
sub for_overwrite2 { my @dat = 1 .. 5000000 ; for(@dat) { $_ ++ } ; }
myps ;
CODE:
{
if ( $ARGV[0] == 1 ){ map_overwrite ; last CODE ; }
if ( $ARGV[0] == 2 ){ map_overwrite2 ; last CODE ; }
if ( $ARGV[0] == 3 ){ map_new_array ; last CODE ; }
if ( $ARGV[0] == 4 ){ for_overwrite2 ; last CODE ; }
}
myps ;
0998デフォルトの名無しさん
2011/08/21(日) 10:23:39.52% perl hoge.pl 1
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
HOGE 54445 98.2 31.1 3765716 1303964 s001 R+ 10:08AM 0:03.48 perl hoge.pl 1
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
HOGE 54445 100.0 32.0 3804780 1343036 s001 R+ 10:08AM 0:06.14 perl hoge.pl 1
% perl hoge.pl 2
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
HOGE 54467 100.0 31.1 3765716 1303968 s001 R+ 10:08AM 0:03.49 perl hoge.pl 2
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
HOGE 54467 100.0 34.5 3935852 1447636 s001 R+ 10:08AM 0:05.40 perl hoge.pl 2
% perl hoge.pl 3
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
HOGE 54514 98.8 31.1 3765716 1303968 s001 R+ 10:08AM 0:03.48 perl hoge.pl 3
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
HOGE 54514 99.0 33.0 3843844 1382100 s001 R+ 10:08AM 0:06.30 perl hoge.pl 3
% perl hoge.pl 4
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
HOGE 54548 99.5 31.1 3765716 1303964 s001 R+ 10:08AM 0:03.47 perl hoge.pl 4
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
HOGE 54548 99.3 32.0 3804780 1343036 s001 R+ 10:08AM 0:04.85 perl hoge.pl 4
メモリ使用量(初期キープ分 - 実行後メモリ)は、
@dat = map { $_ + 1 } @dat ;# => 0.9%
map{ $_ ++ } @dat ;# => 3.4%
my @dat2 = map { $_ + 1 } @dat ; # => 1.9%
for(@dat) { $_ ++ } ; # => 0.9%
左辺値の値を利用しないmapがこれだけ無駄なのは
左辺値用の値をどっか無名配列にキープし続けてるからと
考えるべきか…
ま、何れにせよ使うべきでは無いコードだ。
0999デフォルトの名無しさん
2011/08/21(日) 10:28:00.96◯解放されてないメモリ量
1000デフォルトの名無しさん
2011/08/21(日) 10:34:09.8110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。