トップページ⇒php
1001コメント350KB

Perlコーディング初心者質問スレ Part 41

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん05/03/10 00:47:16ID:sT66OcmD
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0002nobodyさん05/03/10 00:47:50ID:sT66OcmD
関連スレ
△▲ WebProg 初心者の質問 Part11 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1101635909/

CGIだけど、なんか質問ある? Part 12
http://pc5.2ch.net/test/read.cgi/php/1097334246/

【Perl,CGI】参考書籍 第三版
http://pc5.2ch.net/test/read.cgi/php/1030209573/

【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/997829243/

CGIに依存しないPerlの話題一般/Part2
http://pc5.2ch.net/test/read.cgi/php/1030548610/

★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc5.2ch.net/test/read.cgi/php/1077525387/

【 スクリプト改造依頼スレ 】(丸投げ) part3
http://pc5.2ch.net/test/read.cgi/php/1105046286/
0003nobodyさん05/03/10 00:49:42ID:???
http://pc5.2ch.net/test/read.cgi/php/1110383236/
0004nobodyさん05/03/10 00:51:53ID:???
[過去ログ] 1 of 4

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
0005nobodyさん05/03/10 00:52:43ID:???
[過去ログ] 2 of 4

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
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と誤記)
0006nobodyさん05/03/10 00:53:19ID:???
[過去ログ] 3 of 4

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/
0007nobodyさん05/03/10 00:54:37ID:???
[過去ログ] 4 of 4

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/
part38 http://pc5.2ch.net/test/read.cgi/php/1097158988/
part39 http://pc5.2ch.net/test/read.cgi/php/1101522903/
part40 http://pc5.2ch.net/test/read.cgi/php/1106816922/ (前スレ)
0008nobodyさん05/03/10 00:55:10ID:???
ム板Perlスレより

[プログラミング自体の経験が無い奴はまずココを読め]
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/
0009nobodyさん05/03/10 01:03:06ID:???
前スレと同じテンプレにしたけど、足りない箇所、間違いあったら訂正よろしこ

過去ログ貼るとき「httpが多すぎます」って出た。こんな制限あったんだ

そそ、「コーディングとは云々」ってやつ無かったけどあれやめたの?
前スレ終盤、とんでもないスレ違いの書き込みがあったので気になりますた
0010nobodyさん05/03/10 02:53:34ID:???
ひらがな -> カタカナ変換はぐぐりまくって

$value =~ s/\xa5\xa4/`/g;
$value =~ s/\xa4([\xa1-\xfe])/\xa5$1/g;
$value =~ s/`/\xa5\xa4/g;

とやればできるとなんとかたどり着いたのですが、この逆の
カタカナ -> ひらがな 変換がどうしてもヒットしません。

ご教示いただけますと幸いです。
0011nobodyさん05/03/10 08:33:39ID:Cjqv3NW2
ダウンロードツールを作ってます。
ボタンを押して、ページを切り替えるタイプの掲示板cgiのログを落とせるようにするには
どうすればいいのですか?
getでページ切り替えを送信する掲示板ならまだできそうですが、postで情報を送信する掲示板だとどうしていいかわかりません。
0012nobodyさん05/03/10 08:40:58ID:Cjqv3NW2
>>10
よくわかんないけど
http://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&q=%83%4A%83%5E%83%4A%83%69%82%F0%82%D0%82%E7%82%AA%82%C8%81%40perl&lr=
とかじゃだめ?
0013nobodyさん05/03/10 09:01:21ID:???
>>10
正規表現の左右逆にしてできないん?

>>11
getでできるならpostでもできるだろ。
何なら書き込みフォーム以外の <form method="post"> を <form method="get"> にすれば? とか。
0014nobodyさん05/03/10 09:11:12ID:???
>>1 乙。
関連(参考)スレに
・正規表現道場 [ http://pc5.2ch.net/test/read.cgi/php/1105930285/ ]
も加えるとか。
0015nobodyさん05/03/10 15:29:02ID:Mmpnq31h
例えばとあるCGIを起動したら
http://www.hoge.com/index.cgi
にPOST形式でクエリを送り付けたいのですが不可能ですか?
この送り先は自分のCGIではないです。
CGIの起動はcronで毎日1回です。

getならリダイレクトとかでできると思いますが、POSTはどうすればいいんでしょうか?
0016nobodyさん05/03/10 15:40:29ID:???
>>15
CGI proxyとかそんな感じじゃないの
socketとかLWPとかで検索してみたら
001727105/03/10 17:35:54ID:0qqwutep
csvファイルを読み込み処理するプログラムを作っています。
csvが","のみで区切られているときは、split(/\,/,$file)
等で読み込みできます。
しかしcsvファイルがaaa,"bbb,ccc",dddのようになっている
時に上手く分割する方法を思いつきません。どおすればいいのでしょうか?
0018nobodyさん05/03/10 17:39:53ID:???
>>17
いったい区切り文字は何なんだよ。
," なのか ", なのか , なのか?
, なんならそれでできるはずだが
0019nobodyさん05/03/10 17:51:58ID:???
>>17
そんなあなたにPerlメモ
0020nobodyさん05/03/10 17:53:11ID:???
どこの271だw
0021nobodyさん05/03/10 17:57:38ID:???
Text::CSVってモジュールあったような。
0022nobodyさん05/03/10 18:06:19ID:???
>>12のでグルるとJapanese.pmってのがやたらと引っ掛かるけど、
DLしてみたら31万バイトもありやがる。これじゃ鯖が可愛そうな
んで、自分でそのときの必要に応じて作ったほうがいいと思うが
どうよ。漏れは>>10じゃないが。

0023nobodyさん05/03/10 18:12:19ID:???
>>10
こいうこと?
perl -e '$str="aaa,\"bbb,ccc\",ddd"; @str=split(/,\"?/, $str); print $str[1], "\n";'
bbb
00242305/03/10 18:13:06ID:???
ごみん、>>10→>>17
00252305/03/10 18:16:07ID:???
こうしないとダメだたorz
split(/\"?,\"?/, $str);
すかす変なデータやなぁ
0026nobodyさん05/03/10 18:24:49ID:???
どうせ split したあと "" => " の unescape とかもしなきゃいけないんだろうから、
Text::CSV か DBD::CSV を使っといた方が良さげ。
0027nobodyさん05/03/10 19:57:46ID:???
>>10
use String::Multibyte;

my $euc = String::Multibyte->new('EUC_JP');
my $kana = $euc->mkrange('ァ-ン');
my $hira = $euc->mkrange('ぁ-ん');
my $kanahira = $euc->trclosure($kana, $hira);

my $value = 'ヌルポ';
$value = $kanahira->($value);

--
perl 5.8以降
use encoding "euc-jp";

my $value = 'ヌルポ';
$value =~ tr/ァ-ン/ぁ-ん/;
0028nobodyさん05/03/10 19:59:47ID:0qqwutep
17です。(271は間違いです)
皆様ありがとうございます。

>>17
>いったい区切り文字は何なんだよ。
>," なのか ", なのか , なのか?
>, なんならそれでできるはずだが

区切り文字は,なのですがデータ中に,があった場合に
データがカンマやダブルクォートを含む場合には
"(ダブルクォート) で囲むというルールがあるので
困っていました。
結局下のようなモジュールを使用して解決しました。
http://www.nsknet.or.jp/~kamichan/prog/CSV_pm.html
0029nobodyさん05/03/10 20:18:10ID:???
>>18
CSVの意味わかってないだろおまえ
00302305/03/10 22:15:15ID:???
藻前、区切り文字の意味わかってねーだろ。
00312305/03/10 22:17:23ID:???
ってか、タブ区切りでもCSVってExcelで拡張子つくけど・・・
漏れはK3形式だな。>>29はK3てわかってねーだろ(w
0032nobodyさん05/03/10 22:30:19ID:???
相手がわかってないと思ったら知ったかぶりばかりしてないで説明すりゃいいじゃん。

ちょっとちょっかい出されたくらいで不毛な煽りで返すのは大人げないからやめれ。
00332305/03/10 22:31:42ID:???
何か勘違いしてたみたい。

(´Д`)
( 八)
 〉〉
スミマセンスミマセン
0034nobodyさん05/03/10 22:34:02ID:Lndb2Cof

■■■ お勧めレンタルサーバー ■■■

【ホームページを作るならここをあたれ!】

A:無難なサーバー。 お勧め!!  
 ttp://www.webspeed.ne.jp/  
 ttp://www.wadax.ne.jp/
 ttp://www.ktplan.ne.jp/
 ttp://www.wakwak.net/
 ttp://www.cpi.ad.jp/  
 ttp://solid.ad.jp/  

B:ある程度の障害は大目に。  
 ttp://www.binboserver.com/
 ttp://s55.net/
 ttp://www.j-navi.com/
 ttp://domainya.net/
 ttp://www.j-speed.net/main/
 ttp://www.cyberjellyfish.com/

0035nobodyさん05/03/11 03:18:48ID:???
>>34
ソケット使えて、しかも怒られないところ教えて
0036nobodyさん05/03/11 03:21:22ID:???
>>35
バカだな
0037nobodyさん05/03/11 07:04:53ID:???
おまえさんのアソコこそが最高のソケットじゃないか
0038nobodyさん05/03/11 08:49:18ID:???
>>37
キモ
00391505/03/11 11:01:25ID:BXH5EoKa
>>16
モジュールですか?探して見ます。
00401505/03/11 11:21:11ID:BXH5EoKa
http://search.cpan.org/~gaas/libwww-perl-5.803/lib/LWP.pm
今ここでLWPについて見てますが、英語であんまりわかりません。
とりあえずPOSTでクエリを送りつけるのはできるような感じですが、素朴な疑問があります。

例えば
http://www.hoge.com/test.cgi
というところにあるCGIが、ユーザからp=1という要求を受けた時に
http://www.hoge.com/file/
にユーザのIPアドレスをファイル名としたファイルを作成して、それの処理の正否を
ブラウザに出力するプログラムだったとします。

その時に
http://www.sample.com/send.pl
というのがcron起動でhttp://www.hoge.com/test.cgiにp=1という要求を送った場合には
しっかりhttp://www.hoge.com/test.cgiこのCGIはIP名のファイルを作成するのでしょうか?

cron起動だと出力内容を受け取れませんよね。もちろんsend.plの出力内容はとれますが、
send.plが何も出力せずにhttp://www.hoge.com/test.cgiにクエリを送った場合には
http://www.hoge.com/test.cgiこの出力内容もLinuxの方には受け取れない?それとも
受け取っているがtext/htmlのものは表示できないだけ?
0041nobodyさん05/03/11 11:43:03ID:wWuZgVEw
あるcgiの中で
 foreach (@QUERY){
 ($n,$v)=split(/=/);
 next if $n eq "data" && $v !~ /[^\d\%]/ && (@data = split('%',$v));
 $v=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 $n=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 ・・・

って書いてあったんですが、3行目のnextの部分が、どういう処理をしているのかがわかりません。

どなたか、日本語訳を教えてください。
0042nobodyさん05/03/11 11:48:17ID:???
>>40
>cron起動だと出力内容を受け取れませんよね。
試してみた?
00431505/03/11 11:49:53ID:BXH5EoKa
っていうかLWPってかなりごちゃごちゃと難しいんですね。
DBI程度しか使ったことない人間にとってはorz
でもこれを理解すればかなりのことができるような予感。
頑張ります。

>>41
next if 条件式
これは条件式が真であればそれ以降の処理をすっとばして次のループに移るのです。
つまり
$n eq "data" && $v !~ /[^\d\%]/ && (@data = split('%',$v));

$nを文字列比較してdataと同じで且つ、$vの中には\dと%以外が入っていて、
最後の代入文を実行する。

3つの文が全て新ならnext発動です。
00441505/03/11 11:52:32ID:BXH5EoKa
>>42
すみません。勘違いでしたm(_ _)m
とにもかくにもwwwってのはブラウザに限らないんですね。
LWPの解説をちょっと読んだらそういうことが書いてありました。

クローラーもLWP使えば作れちゃいそうな感じですね。
ただ、モジュールというよりモジュール群のようなので難しいです;
0045nobodyさん05/03/11 11:54:39ID:???
>>41
QUERYの内容がurl encodeされていたらurl decodeをする
00464105/03/11 11:55:17ID:wWuZgVEw
>>43
いずれにしても、最後の代入文は実行されるということで
いいんですよね?
00471505/03/11 11:59:20ID:BXH5EoKa
>>46
&&という演算子を勉強するといいです。
0 && 1
この場合1は評価されません。
1 and 1
1は評価されます。
0048nobodyさん05/03/11 12:00:25ID:???
>>40
英語でわからんとかごちゃごちゃ難しいとか言ってないで
そこのサイト(ってCPAN本家だけど)の An Exampleだけで目的のことはできるような。
00491505/03/11 12:02:58ID:BXH5EoKa
>>48
http://homepage3.nifty.com/hippo2000/perltips/LWP.html
今こっちの日本語ページで勉強してます。
LWPの全容を理解するのが大変なだけで、今回やりたいことだけに的を絞れば
そんなに複雑なことでもないんですね。
0050nobodyさん05/03/11 12:06:46ID:???
>>49のサイトの

# ユーザ・エージェント オブジェクトを作成
use LWP::UserAgent;
$ua = new LWP::UserAgent;
$ua->agent("AgentName/0.1 " . $ua->agent);

これなんで
$ua->agent("AgentName/0.1 " . $ua->agent);
こんなことしてんだ?
$ua->agent("AgentName/0.1");
の間違いだろ。
00514105/03/11 12:08:42ID:wWuZgVEw
>>46
条件文の&&は 且つ という意味でいいと思っていますが。
しかし、最後の文は比較するのではなく、代入してるっぽいので
前の条件文が評価されなくても、代入されるのかなと思ってますが。

間違ってますか?
00524805/03/11 12:11:10ID:???
自分もLWP::UserAgent以外使ったことないんだけどね。
00534805/03/11 12:14:04ID:???
>>51
間違いです
条件が満たされなくなった時点で次の判定式はスルーされます
00541505/03/11 12:28:51ID:BXH5EoKa
これは面白いですね!
他のページの出力内容を自分のページに埋め込むことができるというのはすごい!

LWPを紹介してくださってありがとうございますm(__)m
0055nobodyさん05/03/11 12:45:14ID:???
なんとなく、 Perl や Web プログラミングをおぼえたてのナイーブだったあの頃を思い出させるスレの流れ。
00564105/03/11 12:57:15ID:wWuZgVEw
>>53
ということは、1つ目の条件式をクリアしたあと、
2つ目の条件式をクリアしたときにだけ
代入されて、次のループに移るってことですね?
00574805/03/11 13:17:32ID:???
>>56
正解
複数の式を||でつないだ場合は逆に式が真の時点で判定は終了する。
0058nobodyさん05/03/11 13:42:15ID:???
小数点切り上げって関数がないようですがどうすれば?

$n = 100/49;
if ($nが小数点を含んでいたら){
int $n+1;
}

なんか面倒なのですがこれが普通ですか?

0059nobodyさん05/03/11 13:43:56ID:???
というか小数点を含む数値がどうか調べる関数もないorz
0060nobodyさん05/03/11 13:47:09ID:???
馬鹿な話ですがuseってプログラムの先頭に書いたほうがいいんですか?
使う直前の方がいいですか?

後者だと重複useがでる可能性がありますが、それを良しとするなら見やすいですよね。
意見お願いします。
0061nobodyさん05/03/11 13:58:58ID:???
>>58
>>59
POSIXモジュールのceilとかmodf使えば?
00621505/03/11 14:20:21ID:BXH5EoKa
実装できました。

ところでこのLWPって制作側としてはものすごい便利ですが、これを使うと、
ユーザが直接アクセスしてもいないサイトへユーザの情報が自動的に送られてしまったりしますよね?

例えばとある悪質なアダルトサイトがあったとして、悪質だと気付かずにそこに
月額契約をした場合にその入力内容をそのまま他の数十のアダルトサイトへも
LWPでリクエストが送られて自動的に登録されてしまうような惨事も起きてしまう可能性もありますよね。

当然勝手に登録されたといっても、住所や電話番号からクレジットの暗証番号まで正確なので
下手したら裁判でも負ける気がするのですが・・・・

まあもちろんアダルトサイト管理人がLWPを使わずとも手動で顧客の情報で他のサイトにも
登録するのと同じことですが。

このあたりってみなさん気にしたことありませんか?
00631005/03/11 14:30:12ID:???
返答遅れてすみません。色々試してました。

正規表現を逆にしてみたりPerlメモの文字コードの
正規表現を見ながら自分なりに書いていたつもりだった
んですけど、上手くいきませんでした。

Unicode::Japaneseは315,392 バイトあるということで、
プロジェクトマネージャに却下されました。。。

色々とご教示いただき、誠に有難うございました。
もしも カタカナ->ひらがな変換に成功した際はこちらで
報告させていただきます。
00641505/03/11 15:05:14ID:???
>>63
よくわかんないけど、jcode.plですぐできるんじゃないですか?

jcode::tr(\$str,"ア-ン","あ-ん");
もしも半角カナもというならこれをやる前に
jcode::h2z_euc(\$str);
をやるだけ。

バイト云々ならlength関数とか使いながら一旦適度な長さに分割してそれからくっつける。

そういうルーチンを自分で作ればいいけど何か問題でもあるのかな?
00651505/03/11 15:07:40ID:???
追記
単に分割は危ないので、ちゃんと文字の区切りでやりましょう。

my @strings = $string =~ /[\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE]/og;
これはeucコードでなくてはならないので先にeucに変換して下さい。
00661505/03/11 15:21:57ID:BXH5EoKa
あ、すみません。LWPで1ヵ所質問です。

# リクエストを作成します
my $req = new HTTP::Request POST => 'http://www.perl.com/cgi-bin/BugGlimpse';
$req->content_type('application/x-www-form-urlencoded');
$req->content('match=www&errors=0');

今動作確認したらどうやら
$req->content('match=www&errors=0');
この値は自動的にURIエンコードしてくれてはいないみたいですが、
たとえば
hoge=あいうえお
なんて場合には自分で「あいうえお」だけエンコードしろっていう仕様なのでしょうか?
0067nobodyさん05/03/11 15:29:44ID:???
>>62
https以外で本名、住所書いたことないし。それもある程度有名なところ。
その他のwebで入力した情報は一般に公開したものと思ってるから気にしてないしそういうとこ個人情報は書かない。
4月から個人情報なんたらは始まるけどどうなんでしょうね。
0068nobodyさん05/03/11 15:37:40ID:???
LWPはhttpsでも問題なく使えるがそういう問題ではないのか?
よくわからん。そもそも勝手に登録されたものなんて無効だよ。
気にする必要なし。
00696005/03/11 15:39:38ID:???
お願いします;
0070nobodyさん05/03/11 16:05:15ID:???
Perlって
ー
の文字がエラーになるって聞いた覚えがあるんだけど、EUCで書いてれば無問題?
0071nobodyさん05/03/11 16:09:22ID:???
>>70
sjisでもエスケープすれば無問題
0072nobodyさん05/03/11 16:20:46ID:???
eqとか==の演算子って$_をデフォルトで対象にしてくれないみたいですが、
そういうことをしてくれるモジュールってありませんか?

for(0..4){
print "3回目" if 3 eq;
}

とかできると便利なんですけどね。
0073nobodyさん05/03/11 16:28:02ID:???
あっそ
0074nobodyさん05/03/11 17:02:50ID:???
aa... eq
0075nobodyさん05/03/11 17:25:44ID:???
>>72
4回目だろ、とかいう突っ込みはありかな
0076nobodyさん05/03/11 18:45:46ID:stOV0FtX
こんなのは?
print "3回目" if /^3$/;
0077nobodyさん05/03/11 19:20:11ID:???
横着したがるのもたいがいにせいよと
0078nobodyさん05/03/11 20:08:10ID:???
>>10
$value =~ s/\xa4\xa5/`/g;
$value =~ s/\xa5([\xa1-\xfe])/\xa4$1/g;
$value =~ s/`/\xa4\xa5/g;
0079nobodyさん05/03/11 20:13:17ID:???
>>10
ところで、ひらがな→カタカナの変換はあれで大丈夫?

$value = "ばぅばぅ";
$value = "靴が痛い";

こんなのが、ちとヤバイと思うのだけれど。

>>60
大抵は先頭だね。
でも、配布するモジュールでもなければ好きな所に書いていいと思うよ。
(それから、encodingは、エンコードを始める位置で宣言する必要があるはず。)

>>72
sub at($);

for(1..4){
print "3回目" if at 3;
}

sub at($){ $_ == shift }

# 意味不明な世界へようこそ。
00806005/03/11 21:13:35ID:???
>>79
やっと来た・・・・・

やはり先頭ですよね。でももしも間違って
100行目: use DBI;
.
.
.
700行目: use DBI;

とかしても表面上にはエラーにならないくらいだから、内部的にも何の問題もないんですよね?(encordingなどは別として)
0081nobodyさん05/03/11 21:30:45ID:???
use はコンパイル時に評価されるのでは?
実行時に評価されるのは require で。
0082nobodyさん05/03/11 21:43:35ID:???
>>80
useやrequireは何度呼び出しても問題にはならないことになっている。
モジュールを先頭で呼び出すのは分かりやすくする為にすぎないので、実際に使う分にはどこに書いても構わない。

0083nobodyさん05/03/11 21:57:38ID:???
>>80
大丈夫。

http://www.harukaze.net/~mishima/perl/man/perlfunc.1.html
> use Module
> 指定したモジュールから、現在のパッケージにさまざまな
> 内容をインポートします。 多くは、パッケージのサブル
> ーティン名や、変数名に別名を付けることで、実現されて
> います。 これは、
>
> BEGIN { require Module; import Module LIST; }
>
> というのと、全く同値です。

> require EXPR
...
> ファイルは、同じ名前で 2 回読み込まれることはありま
>せん。

http://www.harukaze.net/~mishima/perl/man/perlvar.1.html
> %INC ハッシュ %INC は、do や require によってインクルード
> された、個々のファイル名をエントリとして持っています。
> key は指定したファイル名で、value は実際に見つかった
> 場所となっています。 require コマンドは、指定された
> ファイル名が既にインクルードされているかを、この配列
> を使って調べます。
0084nobodyさん05/03/11 23:40:01ID:???
モジュールの依存関係がわかりやすいように
useは頭に並べておくのが良いと思います。
0085nobodyさん05/03/11 23:55:38ID:???
自分のサイトでだけ使うサブルーチンライブラリなんかで、
後からどんどんルーチンが増えていく時に、useだけルーチンから出しておくと、
何かと面倒。

なので俺は両方に書いてる。
0086nobodyさん05/03/12 00:26:54ID:???
Perlで会員制ネットショップのCGIを組むとします。

ログインとかログアウトってどうやるんですか?
CGI::Session使えば簡単なセッションはできますが、相手のIDとPASSをセッションファイルに入れればいいのかな?
なんかセキュリティ云々がよくいわれてますが、どちらにしても言うほどのセキリティなんか実装しようがないですよね。

つまりどのレベルまですれば一般レベルなのかということです。

CGI::sessionでセッションIDはクッキーに焼くことで渡し、セッションファイルにIDとパスを。
IDとパスが実在すればログイン状態。

↑これはセキリティ的に足りないでしょうか?
0087nobodyさん05/03/12 00:43:48ID:???
>>86
・IPの一致チェック
・cookieはディスクに保存させない
・可能ならSSLを使用
スクリプト作成者にできることはこれくらいでは。

それと、パスは保存する必要なしかと。
0088nobodyさん05/03/12 02:35:22ID:DLGfeKNq
すいません。四捨五入させなさいとはどう記述すればいいのですか?m(__)m
0089nobodyさん05/03/12 03:03:55ID:???
>>86
セッションで渡り歩かなくても済むような構成にしてしまうのも手。
渡り歩いた履歴はCookieに溜め込んで、最後のページでIDとPassを入力させて完了とか。

>>88
int()をちょいと工夫すればOK。マイナスには気をつけるよろし。
0090nobodyさん05/03/12 07:24:17ID:???
PerlMagickは初心者でOKなんかな。
透過PNGの出力ができないんだけど、仕様ですか?
(透過しない)

透過GIFならできました。
0091nobodyさん05/03/12 08:11:23ID:???
>>88
$num>0 ? int($num+0.5) : int($num-0.5);
0092nobodyさん05/03/12 14:10:22ID:???
>>91
小数点切り上げもそれくらい短くすっきりとできませんか?
0093nobodyさん05/03/12 15:33:01ID:???
$num==int($num) ? $num : int(++$num);
0094nobodyさん05/03/12 15:53:09ID:???
>>93
おお!!
0095nobodyさん05/03/12 17:09:44ID:???
その短いコードが何をやってるかぐらい理解しようや
0096nobodyさん05/03/12 19:44:08ID:???
>>60
ちょっといまさらだけど。
useは、通常の実行文ではなくて、コンパイル中に実行される文だから、普通は先頭。

例えば、
1 + 1;
use hoge;
2 + 2;
とか、書いてしまっても、
絶対にuseから処理される。

if(bool){
  use hoge;
}
とか書いても、ifとか、そんな次元じゃなく、
1番最初にuseが処理される。
だから、普通は先頭に書く。

実行結果は、どこに書いても同じになるかもしれないけど、やっぱ普通は先頭。

スコープに影響するプラグマモジュールなら、話は別で、
適切な場所に書いておくよろし。
(ただし、この場合も実際にはuseは最初に処理されている)。

requireは、実行中に処理される普通の文なので、常に適切な場所が良いと思う。
でも、どこに書いても構わないなら、やっぱ先頭がいいなー。わかりやすいから。
0097nobodyさん05/03/13 08:25:22ID:oiuJgK8i
掲示板つくってるのですがログを読み込んで全部配列に入れて処理してます。
メモリやばいですよね?
0098nobodyさん05/03/13 08:32:34ID:???
>>97
whileで処理した方がいいなぁ
0099nobodyさん05/03/13 08:58:13ID:???
>>97
ログの大きさにもよるが、負荷考えるならまず
書き込んだらhtmlに吐き出すタイプにしような。
0100nobodyさん05/03/13 11:22:33ID:???
>>95
ん?どこが難しいの?
0101nobodyさん05/03/13 11:44:21ID:???
パーミッションの変更はchmodで出来るけれど、
確認する方法はある?
■ このスレッドは過去ログ倉庫に格納されています