Perl 初心者コーナー Part23
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/05/16 11:18ID:zDRBc/j4【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0002nobodyさん
03/05/16 11:18ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
0003nobodyさん
03/05/16 11:19ID:???Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
part20 http://pc2.2ch.net/php/kako/1044/10447/1044717887.html (タイトルに19と誤記)
part21 http://pc2.2ch.net/php/kako/1047/10479/1047980851.html
part22 http://pc2.2ch.net/test/read.cgi/php/1050369328/l50
[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
0004nobodyさん
03/05/16 11:20ID:???・Perl Com: http://www.perl.com/pub/
・CPAN.com: http://search.cpan.org/
・ActivePerl: http://www.activestate.com/
・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
・Perl Recipes: http://www.effectiveperl.com/recipes/
・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
0005nobodyさん
03/05/16 11:20ID:???・Perl News: http://www.news.perl.org/
・Perl Monks: http://www.perlmonks.org/
・use Perl; : http://use.perl.org/
・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
・Perldoc.com: http://www.perldoc.com/
・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
・Rex Swain's Home Page: http://www.rexswain.com/
・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
・Perl Tuts: http://savage.net.au/Perl-tutorials.html
・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
・use Object; : http://perl.infoware.ne.jp/
0006nobodyさん
03/05/16 11:29ID:???・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module_/
・PPMPackages: http://www.activestate.com/PPMPackages/
・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm
[Security]
・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
・CGI and Security http://www.ansi.co.jp/tech/cgi/security/
・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
・How to Write Secure Code:http://www.shmoo.com/securecode/
・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt
[OS]
・Linux日本語マニュアル:http://www.linux.or.jp/JM/
・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
0007nobodyさん
03/05/16 11:30ID:???( l _、_
\ \ ( <_,` )
ヽ___ ̄ ̄ ) おちゅかれ。7GET
/ /
0009nobodyさん
03/05/16 13:45ID:???そういう限定は一切無し?
それともperlというと暗にcgiのことで、
web用に使う人しかおらん、という前提だろうか。
0011nobodyさん
03/05/16 13:58ID:???Perlについての質問箱 5箱目
ttp://pc2.2ch.net/test/read.cgi/tech/1053053082/
CGIではないPerlの話なら、ム板のスレがいいと思われ。
0012nobodyさん
03/05/16 14:50ID:???cgi書いたことねえ。
0014nobodyさん
03/05/16 16:21ID:???ム板の方では、cgiはWebProgに逝け、と誘導されてる訳で、
その割に、こっちの方では特にcgi向けのスレであることを謳ってない。
というか、むしろperl全般に見えるしcgiに特化した話を排斥する
傾向さえ見られる。
スレのスタンスがよくわかんない、という話。
0015nobodyさん
03/05/16 16:25ID:???基本的にはCGIでのPerl話題。
WebProg板だからな。
CGIに特化した話を排斥しているように見えるのは、その話題がほぼ必ず
「コーディングの話題じゃない」からだ。
つまり、「CGIとしてPerlを使う時のコーディングの話題」のスレってことだ。
確かにスレタイや>>1を見ただけではわかりにくいかもな。
0016nobodyさん
03/05/16 16:39ID:???ム板のPerlスレは、いつもるびきちやらにwebprog行けって
言われて、前の(前の)スレは、あいつに荒らされでぽしゃった。
だから、CGIじゃないPerlの話題もこっちが主流だった。
こっちじゃ、CGIのスレがあるから、Perl初心者コーナーは、
CGI以外のPerlについて話す場所にしようとみんなでしてた。
前の前のスレの>>1を見れば分かる。
でも、るびきちの荒らしがなくなったので、まあ、CGIでも
CGI以外でもPerlのコーディングに関するものなら、いいんじゃ
ないか。高度なのは、ム板、比較的簡単なのは、こっちで
どうかな。
0017nobodyさん
03/05/16 17:40ID:Jkp+t2ia'sql_arrange' => "顧客絞込み条件の入力",
'select' => "該当顧客の閲覧",
'writemail' => "メールの記入"
);
foreach $value (keys %mode2name){
$HtmlTmp .= qq|$mode2name → |;
}
print $HtmlTmp;
とやると、
「該当顧客の閲覧 → メールの記入 → 顧客絞込み条件の入力 → 」
と表示されます。
これを、%mode2name = で設定した順番、つまり、
「顧客絞込み条件の入力 → 該当顧客の閲覧 → メールの記入」
と表示させるには、
foreachの部分はどう書けばいいのでしょうか?
0019nobodyさん
03/05/16 17:56ID:???foreach $value ('sql_arrange','select','writemail'){
$HtmlTmp .= qq|$mode2name{$value} → |;
}
0020nobodyさん
03/05/16 18:20ID:???ハッシュに入っているキーの量が少ない(メールフォーム程度)なら、
キーに01,02等の通し番号を(キーの頭に)付けておいて、
foreach $key (sort keys %hash)
する手がある。表示もcgiでやるならsprintfして出力するだけだから簡単。
場当たり的なのが欠点。
perl cookbookにはTie::IxHashモジュールを使えとある。
こっちの方がたぶん正道のような気もするが、使ったことないので要調査ということで。
002117
03/05/16 19:01ID:???頭いい!?と思ったが、
ちょっとそれは気持ち悪い。。。
>>20
とりあえず、
>キーに01,02等の通し番号を(キーの頭に)付けておいて
でやってみます
0022nobodyさん
03/05/16 23:42ID:???'sql_arrange' => ["01","顧客絞込み条件の入力"],
'select' => ["02","該当顧客の閲覧"],
'writemail' => ["03","メールの記入"]
);
で、1項目目でソートしたキーを入れるに入れて
foreach ( @hoge ) {
$ref = $mode2name{$_};
$.... .= "$ref->[1]";
}
見たいな感じでいけないかな。実際に動かしてないからちびっと不安
0023nobodyさん
03/05/16 23:43ID:???0024nobodyさん
03/05/17 00:51ID:VynWxd2Gデータの構成は一緒なんですが。
@date = @date[sort {$tmp1[$b] <=> $tmp1[$a] || $tmp2[$b] <=> $tmp2[$a] || $tmp3[$b] <=> $tmp3[$a] || $tmp4[$b] <=> $tmp4[$a]} 0 .. $#tmp1];
@date2 = @date2[sort {$tmp1[$b] <=> $tmp1[$a] || $tmp2[$b] <=> $tmp2[$a] || $tmp3[$b] <=> $tmp3[$a] || $tmp4[$b] <=> $tmp4[$a]} 0 .. $#tmp1];
これでは別々になってしまうし・・・
0026nobodyさん
03/05/17 07:15ID:wMi5ghdiほにゃらら if ほげほげ
ってかきかたはできるみたいですが、
これにelseの意味も加えた1行の書き方ってないですか?
0027nobodyさん
03/05/17 07:20ID:???初心者が見て勉強になるソースってどれでしょうか?
0029nobodyさん
03/05/17 08:08ID:+QQFZ4NNhttp://accessplus.jp/staff/in.cgi?id=10645
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=neat
http://www.emzshop.com/goodstyle/
http://members.tripod.co.jp/neatstyle/index.html.html
0030nobodyさん
03/05/17 10:38ID:0rspM7nmhttp://accessplus.jp/staff/in.cgi?id=11141
プニュ ( ゚∀゚)σ)´Д`)
0031nobodyさん
03/05/17 10:55ID:bv1ocBAi0032nobodyさん
03/05/17 14:49ID:???こんなののほかに何かいいのありますかね。
open(FILE1, "test1.txt") or die "$!\n";
@file1 = <FILE1>;
close FILE1;
open(FILE2, "test2.txt") or die "$!\n";
while(<FILE2>) {
print $_ unless grep($_, @file1);
}
close FILE2;
よろしうお願い島。
0033nobodyさん
03/05/17 14:57ID:???開くなら開く。読み込むなら読み込む。
0034nobodyさん
03/05/17 15:03ID:???0035nobodyさん
03/05/17 15:10ID:???つうことは、(1)開くなら開く:
open(FILE1, "test1.txt") or die "$!\n";
@file1 = <FILE1>;
close FILE1;
open(FILE2, "test2.txt") or die "$!\n";
@file2 = <FILE2>;
close FILE2;
for(@file1) {
print $_ unless grep($_, @file2);
}
とか、(2)読み込むなら読み込む:
open(FILE1, "test1.txt") or die "$!\n";
open(FILE2, "test2.txt") or die "$!\n";
while(<FILE1>) {
$this = $_;
while(<FILE2>) {
print unless $_ eq $this;
}
}
close FILE1, FILE2;
とか?(2)は、ちょっとばかばかしいしぃ。
0038nobodyさん
03/05/17 15:40ID:???自分でもクソ質問って分かってるけど、なぜか思うように動かないのです。
$pattern[0] = "あああ.30";
($test_1, $test_2) = split("\.", $pattern[0]);
print "$test_1\n";
なぜか代入されない。不思議。
0039nobodyさん
03/05/17 15:45ID:???($test_1, $test_2) = split("\.", $pattern[0]);
↓
($test_1, $test_2) = split (/\./, $pattern[0]);
不思議。
0041nobodyさん
03/05/17 16:16ID:???そういうもんだろ。
不思議。
004238
03/05/17 16:21ID:???($decode_name, $decode_value) = split("=",$decode_pair);
上の二つは正常に作動してるから、
($test_1, $test_2) = split("\.", $pattern[0]);
これも正常に作動すると思ったんだけど…。
しなっかったのよ。
不思議。
0043nobodyさん
03/05/17 16:32ID:???>上の二つは正常に作動してるから、
正常って何だよ。異常だろ。
http://flex.ee.uec.ac.jp/texi/perl/perl_56.html
0044nobodyさん
03/05/17 16:39ID:???0045nobodyさん
03/05/17 16:41ID:???条件は忘れた。
0046nobodyさん
03/05/17 16:42ID:???||=や<<=などの代入演算子について知りたいのでつが、"代入演算子"でぐぐっても=や.=、+=くらいの一般的(といっていいのか疑問でつが)な代入演算子を解説しているサイトしかヒットしません。
代入演算子について詳しく解説してあるサイトをご存知な方はURLを貼り付けてください。
おながいしまつ。
0048nobodyさん
03/05/17 16:51ID:???難しく考えなくていいんでないの?
$a ||= &b;
は
$a = $a || $b;
ってだけでしょ。
仮に、$a=0,$b=1 だったら、
右辺の結果、真になるので、$a=1となるだけ。
0049nobodyさん
03/05/17 16:52ID:???↓
$a ||= $b;
005138
03/05/17 16:56ID:???perlは妙な落とし穴が多いですね…。
実はperl独特の落とし穴(?)に何回もはまってます。
ありがとうございました。
005246
03/05/17 17:43ID:???助かりますた。
0053nobodyさん
03/05/17 17:45ID:???splitの1つ目の引数に渡せるものは、「正規表現」か「文字列」。
文字列が渡されれば、それを正規表現と解釈する。だから、これらはすべて同じ動作。
split /\./
split m/\./
split qr/\./
split "\\."
split '\\.'
split qq/\\./
split q/\\./
005538
03/05/17 18:06ID:???q[\\.]って超不思議なんだけど。
ですが、俺に中では「気にしない」と言う方向で落ちつきました。
ありがとです。
0056nobodyさん
03/05/17 18:23ID:???よく引数でtext=%82%A0%82%A2%82%A4%82%A6%82%A8っていう%に続く2桁の16進数でデータが渡りますよね。
デコードするには
$value =~ s/ %( [a-fA-F0-9][a-fA-F0-9] ) / pack ( "C" , hex ($1) ) / eg ;
ですよね。
あえて日本語を%に続く2桁の16進数にエンコードするにはどうするにはどうすればいいのですか?
データを送って自動でエンコードされたのを取り出すのはなしってことでお願いします。
0057nobodyさん
03/05/17 18:35ID:???$encode = join('',map{ s/(\W)/'%' . unpack('H2', $1)/eg; } split(//,$data));
コレでどうやろ?
0058nobodyさん
03/05/17 19:07ID:???Perlでそれを作ってもいいかもね
あいうえお
%82%A0%82%A2%82%A4%82%A6%82%A8
あいうえお
---
$a = 'あいうえお';
print("$a\n");
$a = urlencode($a);
print("$a\n");
$a = urldecode($a);
print("$a\n");
sub urlencode{
my $str = $_[0];
$str =~ s/([^\.\*\-_a-zA-Z0-9 ])/sprintf("%%%02lX",unpack("C",$1))/eg;
$str =~ tr/ /+/;
return $str;
}
sub urldecode{
my $str = $_[0];
$str =~ tr/+/ /;
$str =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
return $str;
}
005956
03/05/17 19:38ID:???ダメです。
”あいうえお”が”1111111111”になってしまいます。
>>58さん。
これでうまくいきました。
ありがとうございました。
0060nobodyさん
03/05/17 20:22ID:???書き込めませんでした。皆さん、以下のスクリプト実行してみて。
@perl=qw(PERL Perl perl PERL Perl perl);
for(0 .. $#perl) {
@tmp=@perl;
print join('、', splice(@tmp, $_)), "\n";
}
@mansei=split(//, 'perl');
for(1 .. $#mansei) {
@tmp=@mansei;
print splice(@tmp, $_), "\n";
}
for($i=$#mansei; $i>0; $i--) {
@tmp=@mansei;
print splice(@tmp, $i), "\n";
}
for ($i=$#perl; $i>=0; $i--) {
@tmp=@perl;
print join('、', reverse(splice(@tmp, $i))), "\n";
}
もっとうまく書けるかな?
0061nobodyさん
03/05/17 20:37ID:???面白かったのに。
0062nobodyさん
03/05/17 21:14ID:???\\ 正直、スマンカッタ!! //
+ + \\ 正直、スマンカッタ!!/+
. ___ . ___ . ___ +
/. ――┤ /. ――┤ . /. ――┤+
./(. = ,= | ./(. = ,= | ./(. = ,= |
+ . |||\┏┓∩|||\ ┏┓∩|||\┏┓/ +
(( (つ ノ (つ 丿 (つ つ ))
ヽ ( ノ ( ヽ ノ ) ) )
(_)し し(_) (__)__)
0063nobodyさん
03/05/17 21:47ID:???sub p{print join(', ',@_),"\n"}
p(shift@t,@t)while@t;
print substr($p[-1], -abs),"\n"for 3,2,1,2,3;
p(@t=(@t,$t))while$t=pop@p;
0064nobodyさん
03/05/17 22:04ID:0j4/huIM漠然とした質問ですみません。
0067nobodyさん
03/05/17 22:17ID:ma11SCqXhttp://accessplus.jp/staff/in.cgi?id=10645
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=neat
http://www.emzshop.com/goodstyle/
0068nobodyさん
03/05/17 22:37ID:UhIqbGm50070nobodyさん
03/05/17 22:43ID:???0071nobodyさん
03/05/17 22:44ID:???$ユニークな番号 = int(rand(900000))+100000;
007271
03/05/17 22:46ID:???と仮定してみる
ナニをもってユニークとするのか聞きたいところだ
0073nobodyさん
03/05/17 22:56ID:???0074nobodyさん
03/05/17 23:04ID:0j4/huIM_はエンコードされないですよね?
0076bloom
03/05/17 23:08ID:w1ZjXwV80077nobodyさん
03/05/17 23:17ID:???そら、発生は一回じゃなくて、最高999999回発生させるんでしょ。
そのそれぞれが、過去に発生させた数字と重複していないことが
保証されている生成方法
って、全検するしかない気もするな
0079nobodyさん
03/05/17 23:51ID:???0080nobodyさん
03/05/17 23:54ID:???0081nobodyさん
03/05/17 23:54ID:???0082nobodyさん
03/05/18 00:06ID:aBq13e5fまず、環境はウィンドウズ98です。
ファイルの読み書き追記モード(open(OUT, "+<file.txt");)で,
読み込みと書き込みを同時に行おうと思ってますが、
truncateが使用不可能なため、
seek(OUT,0,0);
truncate(OUT,0);
print OUT $a;
の手法が使えません。
truncateの変わりになる方法を教えてください。
かなり調べたんですが、わかりませんでした。
0083nobodyさん
03/05/18 00:08ID:???0084nobodyさん
03/05/18 00:10ID:aBq13e5f思ってます。
終点のtell(OUT)以下を削除する方法です。
0085nobodyさん
03/05/18 00:10ID:???@seed = (0 .. 99);
my %seed;
sub init{#初期化
for(0 .. $#seed){
$seed{$_} = $_;
}
}
sub select{#取り出し
my $num = $seed{int(rand(scalar(keys(%seed))))};
delete $seed{$num};
return($num);
}
&init;
$uniq_num = &select; #コレを繰り返しとな・・・
008685
03/05/18 00:12ID:???my %seed;
sub init{#初期化
for(0 .. $#seed){
$seed{$_} = $seed[$_];
}
}
0087nobodyさん
03/05/18 00:13ID:???0091nobodyさん
03/05/18 00:22ID:???http://www.rfs.jp/sitebuilder/perl/05/03.html#open
0094nobodyさん
03/05/18 00:29ID:???自作関数で、引数が不正の場合に、
Perlの文法チェックでエラーを出力させたいのですが、
方法がわかりません・・・
どうすれば文法チェック時に引数のチェックができ、エラーを出せますか?
0095nobodyさん
03/05/18 00:37ID:???@dat0 = @dat1 = ();
foreach(0 .. 999999){ $dat0[$_] = $_; }
foreach(0 .. 999999){ $dat1[$_] = splice(@dat0,rand($#dat0),1); }
ではだめ?
009885
03/05/18 01:05ID:???@seed = (0 .. 10);
sub select{#取り出し
my $key = int(rand(scalar(@seed)));
my $num = $seed[$key];
splice(@seed,$key,1);
return($num);
}
$data = &select;
0099nobodyさん
03/05/18 01:09ID:???なぜ、そんな巨大な配列を作るんだ?
コストがかかってしかたないと思うが・・・
普通にfor文でぶん回せば良いと思うのだが・・・
0100nobodyさん
03/05/18 01:28ID:???0101nobodyさん
03/05/18 01:43ID:wPiZL/S/http://accessplus.jp/staff/in.cgi?id=10645
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=neat
http://www.emzshop.com/goodstyle/
■ このスレッドは過去ログ倉庫に格納されています