Perlコーディング初心者質問スレ Part 38
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/10/07 23:23:08ID:kiEzDCJF【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0002nobodyさん
04/10/07 23:28:34ID:???関連スレ
CGI: Common Gateway Interface part 11
http://pc5.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc5.2ch.net/test/read.cgi/php/1030209573/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc5.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ) part2
http://pc5.2ch.net/test/read.cgi/php/1092304968/
△▲ WebProg 初心者の質問 Part10 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1095633323/
【Perl】ファイルロック(排他処理)について語ろう
http://pc5.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc5.2ch.net/test/read.cgi/php/1034645635/
【Perl】掲示板を使ろう!
http://pc5.2ch.net/test/read.cgi/php/988890976/
Perlモジュールについて
http://pc5.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc5.2ch.net/test/read.cgi/php/1030548610/
0003nobodyさん
04/10/07 23:29:28ID:???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
0004nobodyさん
04/10/07 23:30:33ID:???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/php/kako/1050/10503/1050369328.html
part23 http://pc2.2ch.net/php/kako/1053/10530/1053051519.html
part24 http://pc2.2ch.net/php/kako/1054/10549/1054992610.html
part25 http://pc2.2ch.net/php/kako/1056/10567/1056730690.html
part26 http://pc5.2ch.net/php/kako/1059/10590/1059043704.html
part27 http://pc5.2ch.net/php/kako/1060/10608/1060808783.html
part28 http://pc5.2ch.net/php/kako/1063/10635/1063562491.html
part29 http://pc5.2ch.net/php/kako/1066/10662/1066286828.html
part30 http://pc5.2ch.net/test/read.cgi/php/1069846177/
part31 http://pc5.2ch.net/test/read.cgi/php/1072896288/
part32 http://pc5.2ch.net/test/read.cgi/php/1075545279/ (タイトルに31と誤記)
part33 http://pc5.2ch.net/test/read.cgi/php/1078076768/
part34 http://pc5.2ch.net/test/read.cgi/php/1081148490/
part35 http://pc5.2ch.net/test/read.cgi/php/1085557731/
part36 http://pc5.2ch.net/test/read.cgi/php/1089779036/
part37 http://pc5.2ch.net/test/read.cgi/php/1093106507/ (前スレ)
0005nobodyさん
04/10/07 23:33:11ID:???[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www5a.biglobe.ne.jp/~n_rieko/perl/
[本]
リャマ: http://www.oreilly.co.jp/BOOK/lperl3/
駱駝: http://www.oreilly.co.jp/BOOK/pperl3v1/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/BOOK/pcook/
[オンラインマニュアル]
Perldoc.com: http://perldoc.com
perldoc.jp: http://perldoc.jp
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/%7ekbk/perl5.005/
[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://member.nifty.ne.jp/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
0006nobodyさん
04/10/07 23:34:58ID:???コーディング 【coding】
プログラミング言語を使ってソフトウェアの設計図にあたるソースコードを作成すること。
(e-Wordsより)
自分の質問がPerlに関することなのか、
それともPerlではなくCGIやHTMLについてなのかを切り分けした上で、
質問して下さい。
0008nobodyさん
04/10/07 23:39:26ID:???http://www.geocities.co.jp/SiliconValley/5656/
http://www.hyuki.com/writing/techask.html
これはMLでの作法ですが、BBSでの質問にも当てはまると思います。
例え匿名でも、回線の向こうに居るのはあなたと同じただの人ですよ。
0009nobodyさん
04/10/07 23:40:21ID:???WikipediaのPerlの項目
http://ja.wikipedia.org/wiki/Perl
0012nobodyさん
04/10/08 00:40:34ID:LN3yr29s一般的に美しいとされるコードの書き方はどのような書き方ですか?
参考になるようなソースがあればお教えください。
0013nobodyさん
04/10/08 01:16:04ID:???http://perldoc.com/perl5.8.4/pod/perlstyle.html
http://perldoc.jp/docs/perl/5.8.0/perlstyle.pod
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlstyle.html
001412
04/10/08 02:14:31ID:LN3yr29sしかしながら、見た目の美しさではなく、
コードを後から読む人にとって、
直感的に、わかりやすいコードという意味で、美しいといいました。
誤解を招く言い方でスイマセンでした。
0015nobodyさん
04/10/08 03:17:19ID:???perlstyle にはそういう意味で美しくする為の Tips も載っているだろ?
より具体的に知りたければ、自分の書いたコードをコードレビュー系の
ML なりスレなりに投下してごらん。偏った意見が聞けて面白いよ。
http://pc5.2ch.net/test/read.cgi/php/1049514428/
001612
04/10/08 03:46:07ID:LN3yr29s参考になりました。どうもありがとう。
0017nobodyさん
04/10/08 03:58:51ID:???スレ建て乙
>>14
>コードを後から読む人にとって
それだったら、コーディング標準に従ったコード >>13のURL参照
独自ルールだとどうしても*自分にとって*美しいコードになってしまうことがあるので
質問の意図からすると、
設計の簡潔さ、適切なサンプルコード/ドキュメント(POD)を重視した方がいいんじゃないかな
場合によってはコードを読まずにすませられることもあるよ。
0018nobodyさん
04/10/08 09:25:10ID:D4NtGdWqシェルスクリプトでいうところの↓みたいなことがしたいんですが
echo "current dir is `pwd`"
以前このスレで教えてもらったのですがやり方を忘れてしまいました
ログもググってみたんですが見つかりませんでした
0019nobodyさん
04/10/08 11:14:19ID:???これが高速だし読みやすいのでお勧めだが…
(printに関して言えば、ピリオドよりコンマの方が良いが)
print "current dir is ${\`pwd`}";
print "current dir is ${\do{ `pwd` }";
print "current dir is @{[ `pwd` ]}";
ま、こんな感じで。
0020nobodyさん
04/10/08 14:50:00ID:???0022nobodyさん
04/10/08 16:02:04ID:SvnbdnXk別ウィンドウを使って表示することは可能でしょうか。
javascriptを使えばできるようなのですが、
perlのみでは無理なのでしょうか?
スレ違いなら申し訳ないです。
002312
04/10/08 16:09:32ID:HUGW4EIRどうもありがとうございます。
>>コードを後から読む人にとって
>設計の簡潔さ、適切なサンプルコード/ドキュメント(POD)を重視した方がいいんじゃないかな
>場合によってはコードを読まずにすませられることもあるよ。
ところで、PODとは、コメントのことでしょうか?
コメントだとしても、コードを読まずに済ませられるとは考えにくいので
違う気もします。宜しけれご教授ください。
0024nobodyさん
04/10/08 16:28:01ID:???スレ違いもしくは板違い。
http://pc5.2ch.net/hp/
http://pc5.2ch.net/test/read.cgi/php/1095633323/
>>23
http://perldoc.com/perl5.8.4/pod/perlpod.html
http://perldoc.com/perl5.8.4/pod/perlpodspec.html
http://perldoc.jp/docs/perl/5.6.1/perlpod.pod
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlpod.html
0025nobodyさん
04/10/08 16:39:18ID:3yz40YUbopen MAIL ,"| /usr/sbin/sendmail -t";
print MAIL "From: ".'"ほげほげ" <info@2ch.net>'."\n";
print MAIL "To: ".''."\n";
print MAIL "Cc: ".'<test@test.jp> <hoge@hoge.net>'."\n";
print MAIL "Bcc: ".''."\n";
print MAIL "Subject: ".""."\n";
print MAIL "\n";
print MAIL "test";
close MAIL;
みたいにしても動作しませんでした。
もちろん普通にtoだけいれたら動作します。
どなたかお願いします。
0026nobodyさん
04/10/08 17:35:29ID:???0027nobodyさん
04/10/08 17:47:14ID:???> ところで、PODとは、コメントのことでしょうか?
> コメントだとしても、コードを読まずに済ませられるとは考えにくいので
PODは、コメントと言うよりは、ドキュメントと言った方が適切かもしれない。
Perlの標準モジュールの多くは慣習的に、
モジュールの説明、そのモジュールの使い方(実際に動く最小限のコード)
関数/メソッドのリファレンス、... などを含んでいるので
たとえば、◯◯をしたいといったとき、
PODにそのサンプルが載っていれば内部実装のコードを読む必要はない。
(デバッグで必要になる時までは...)
002812
04/10/08 18:01:20ID:HUGW4EIRどうもありがとう。色々コード&POD読んでみます。
精進します。ありがとう。
0031nobodyさん
04/10/08 18:38:42ID:???open MAIL ,"| /usr/sbin/sendmail -t";
print MAIL "From: ほげほげ <info@2ch.net>\n";
print MAIL "To: \n";
print MAIL "Cc: <test@test.jp>,<hoge@hoge.net>\n";
print MAIL "Bcc: \n";
print MAIL "Subject: スレ違い\n";
print MAIL "\n";
print MAIL "Ccでアドレス列記はperlには関係することではない";
close MAIL;
0032nobodyさん
04/10/08 19:01:26ID:???0035nobodyさん
04/10/09 19:46:27ID:r3ZvWrWVログが10行を越したときに1行だけ残してあとのログが消えるようにするのとどっちが負荷が低いのでしょう_?
つまり、頻繁にログを1行にするのと、100行ものログを読みこむのと、どちらが負荷がかかるんでしょう。
0037初心者です。
04/10/09 20:26:36ID:fCvsZBf9以下の戻り先URLの設定でターゲットの設定は出来ないのでしょうか?
_topに戻りたいのですが、戻れません。
# 戻り先URL
$home = 'http://xxxxx.com/index.html';
誰か教えて下さいませ。大変困ってます。<(_ _)>
0038nobodyさん
04/10/09 20:29:04ID:???スレ違いもしくは板違い。
http://pc5.2ch.net/hp/
http://pc5.2ch.net/test/read.cgi/php/1095633323/
0039nobodyさん
04/10/09 21:00:25ID:LGUhwPv/SMTPを使ってのメール送信で送れてはいますが
OEでの受信で宛先の部分が
undisclosed-recipients になってしまいます。
送信元は正常に表示されているのですが。
どこを修正すればよいでしょうか?
お願いします。
use Net::SMTP;
$smtp = Net::SMTP->new('***.***.ne.jp'); #SMTPサーバ
$smtp->mail(from@test.ne.jp); #送信元
$smtp->to(to@test@ne.jp); #宛先
$smtp->data();
$smtp->datasend("Subject:メール\n"); #件名
$smtp->datasend("メール本文");
$smtp->dataend();
$smtp->quit;
004039
04/10/09 21:03:05ID:LGUhwPv/× $smtp->to(to@test@ne.jp); #宛先
○ $smtp->to(to@test.ne.jp); #宛先
004139
04/10/09 21:04:23ID:LGUhwPv/0043nobodyさん
04/10/09 21:21:16ID:???> $smtp->mail(from@test.ne.jp); #送信元
$smtp->mail('from@example.jp'); # MAIL FROM
> $smtp->to(to@test@ne.jp); #宛先
$smtp->to('to@example.jp'); # RCPT TO
> $smtp->datasend("Subject:メール\n"); #件名
> $smtp->datasend("メール本文");
$smtp->datasend("To: 39 <to\@example.jp>\n"); # To: ヘッダ
$smtp->datasend("Subject: メール\n");
$smtp->datasend("\n");
$smtp->datasend("メール本文");
0045nobodyさん
04/10/09 21:46:43ID:LGUhwPv/返信ありがとうございます。
$smtp->mail(to@test.ne.jp); のすぐ下に
$smtp->datasend("To: to@test.ne.jp\n"); を
追加してみたけど駄目でした。
どこがまずいのでしょうか?
0046nobodyさん
04/10/09 21:48:33ID:LGUhwPv/ありがとうございます。
やってみます。
0047nobodyさん
04/10/10 00:20:52ID:mkQG3wAc操作したいのですがうまくいきません
my $p = { data => 1 };
&abc($p);
print "$p->{data}\n";
sub abc {
my $p = shift;
$p->{data} = 2;
}
↑のようにやってみたのですがなぜかダメでした
再帰処理がしたいので関数内から直接変数の値をいじることはできません
0048nobodyさん
04/10/10 00:32:57ID:???そのコードは問題なく動くので別の所がおかしいのだろう。
use strict; や -w オプション、デバッガで地道に調べてくれ。
0049nobodyさん
04/10/10 00:48:31ID:???0050nobodyさん
04/10/10 02:42:47ID:???書き込みとか削除とかをifで分けていく部分はどういう風にしたらいいんですか?
0051nobodyさん
04/10/10 03:08:11ID:???0052nobodyさん
04/10/10 03:10:22ID:???&write;
} elsif ($mode eq 'delete') {
&delete;
}
こんな感じのt所です。
0053nobodyさん
04/10/10 03:11:28ID:???http://module.jp/dist/web+db-press6-perl-oo.pdf
0055nobodyさん
04/10/10 03:18:58ID:vb66WTKp@{$AoA[$i]} = @array で代用できるという事がよく分かりません。
@{$AoA[$i]} = @array と言うのはどういうことですか?
@($AoA[$i]) = @array との違いを教えてください。
0056(1/2)
04/10/10 04:56:32ID:???普通の配列変数を書く時の @array って書き方。コレ、本当は @{array} の
{ } を省略したものなんだよ。@{ と } で挟まれたホニャララを配列として扱い
ますよ、って意味で、ホニャララが 裸のワード だったら普通の配列変数と
して扱われるんだ。
@{array} = (0,2,4,8); # array という名前の配列変数
ホニャララはリファレンスでも構わなくて、配列に対してできる操作は
同じようにできちゃう。配列の要素を見る時は ${ ホニャララ }[ 添え字 ]
って構文になるよ。
$a_ref = [1,3,5,7]; # 名無しのリストリファレンス
print @{array}; push @{array}, 10; ${array}[0] = 12;
print @{$a_ref}; push @{$a_ref}, 9; ${$a_ref}[0] = 11;
そして当然、代入も。
@{array} = (0,2,4,8);
@{$a_ref} = (1,3,5,7);
文法的に間違えようのない場所なら、この { } は省略できるんだ。
print @array;
print @$a_ref;
0057(2/2)
04/10/10 05:01:32ID:???Perl の変数は予め宣言しなくても使えるよね。この振る舞いと同じように、
未定義な「場所」をムリヤリ配列として使おうとすると、本当にそういう事に
しちゃうんだ。その「場所」がスカラー値しか収められない「場所」なら、
それ自体はスカラー値であるリストリファレンスが収まるってわけさ。
@{AoA} = (); # 空っぽの配列
# スカラー値を収められる入れ物に、リストリファレンスを作って入れる
${AoA}[0] = [0,2,4,8];
# ${AoA}[1] は配列だと勝手に決めて、代入しちゃう!
@{${AoA}[1]} = (1,3,5,7);
気をつけなきゃいけないのは、未定義でもリファレンスでもない「場所」を
ムリヤリ配列として使おうとした時。perl はこういう時、下の例なら $foo の
値、つまり hoge って名前の配列変数を勝手に使っちゃうんだ。
$foo = 'hoge'; # ただの文字列
@hoge = (2,4,6,8);
@{$foo} = (0,1,2,3);
print @hoge; # 0123
この危険な機能の名前はシンボリックリファレンス。 use strict 'refs'; と
唱えておく事で禁止できるよ。
0058nobodyさん
04/10/10 14:32:49ID:bziwCOA4どのような関数がありますでしょうか?
例えば、test@aaa.ne.jpの aaa.ne.jpだけを取得したいんです。
ご存知の方お願いします。
0060nobodyさん
04/10/10 15:21:22ID:bziwCOA4indexは検索文字が対象文字列に存在するかのだと思いましたが
どのようにすればよいんでしょうか?
0061nobodyさん
04/10/10 16:18:08ID:???my $addr_spec = 'test@example.com';
# http://tohoho.wakusei.ne.jp/wwwperl2.htm#index
# http://tohoho.wakusei.ne.jp/wwwperl2.htm#substr
my $domain = substr $addr_spec, index($addr_spec, '@') + 1;
# http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlre.html
($domain) = $addr_spec =~ /([^@]+)\z/;
006255
04/10/10 19:15:24ID:vb66WTKpありがとうございました。
つまり
$a_ref = [0,2,4,6];
などと記述があった後に
@{$a_ref} = (1,3,5,7);
と書かれていたら
$a_ref = [1,3,5,7]; と読替えて良いと言うことでしょうか?
006339
04/10/10 20:18:00ID:bziwCOA4できました。
ありがとうございました。
0064大文字小文字混在をアルファベット順にソートしたい
04/10/10 21:23:27ID:0NABqG2Bこれを得点の高い順に並べ、さらに同じ得点同士ではアルファベット順に並べて
IDを取り出したいと思います。そこで以下のようにしました。
%data= ('aaa' => 90, 'bbb' => 80, 'CCC' => 80, 'DDD' => 70,);
@id_array = sort { $data{$b} <=> $data{$a} or $a cmp $b} keys %data;
しかし、これでは同じ得点の人が
大文字のアルファベット順→小文字のアルファベット順になってしまいました。
(上の例ではaaa, CCC, bbb, DDD,の順になる)
アルファベットの順(aaa, bbb, CCC, DDDの順)に並べ替える方法はありますか?
■ このスレッドは過去ログ倉庫に格納されています