Perlコーディング初心者質問スレ Part 51
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/07/27(木) 17:04:23ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0002nobodyさん
2006/07/27(木) 17:11:03ID:???CGI: Common Gateway Interface part 13
http://pc8.2ch.net/test/read.cgi/php/1126436361/
【Perl,CGI】参考書籍 第三版
http://pc8.2ch.net/test/read.cgi/php/1030209573/
【Perl】ファイルロック(排他処理)について語ろう
http://pc8.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc8.2ch.net/test/read.cgi/php/1034645635/
CGIに依存しないPerlの話題一般/Part2
http://pc8.2ch.net/test/read.cgi/php/1030548610/
★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc8.2ch.net/test/read.cgi/php/1143834740/
【 スクリプト改造依頼スレ 】(丸投げ) part5
http://pc8.2ch.net/test/read.cgi/php/1141174205/
0003nobodyさん
2006/07/27(木) 17:14: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
0004nobodyさん
2006/07/27(木) 17:16:02ID:???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と誤記)
0005nobodyさん
2006/07/27(木) 17:16:41ID:???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/
0006nobodyさん
2006/07/27(木) 17:19:01ID:???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/
0007nobodyさん
2006/07/27(木) 17:19:49ID:???part41 http://pc8.2ch.net/test/read.cgi/php/1110383236/
part42 http://pc8.2ch.net/test/read.cgi/php/1116970588/
part43 http://pc8.2ch.net/test/read.cgi/php/1123777607/
part44 http://pc8.2ch.net/test/read.cgi/php/1129477637/
part45 http://pc8.2ch.net/test/read.cgi/php/1134049707/
part46 http://pc8.2ch.net/test/read.cgi/php/1137518266/
part47 http://pc8.2ch.net/test/read.cgi/php/1141195171/
part48 http://pc8.2ch.net/test/read.cgi/php/1146042050/
part49 http://pc8.2ch.net/test/read.cgi/php/1149017548/
part50 http://pc8.2ch.net/test/read.cgi/php/1153987463/ (前スレ)
part44-621氏による過去ログ倉庫
ttp://user.ftth100.com/mirrorhenkan/perl/
0008nobodyさん
2006/07/27(木) 17:20:53ID:???[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.8/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0009nobodyさん
2006/07/27(木) 17:21:52ID:???[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0011nobodyさん
2006/07/27(木) 19:47:33ID:0k8QdmRt変数を途中で使いたいのですが、どういう方法がありますでしょうか?
$fruit =~ s/みかん/りんご/; #OK
$apple = "りんご";
$fruit =~ s/みかん/$apple/; #NG
$apple = "りんご";
$RegExp = "s/みかん/$apple/";
$fruit =~ $RegExp; #NG
0012nobodyさん
2006/07/27(木) 19:59:13ID:???>$apple = "りんご";
>$fruit =~ s/みかん/$apple/; #NG
これはNGにならない。
$apple = "りんご";
$RegExp = "s/みかん/$apple/";
eval "¥$fruit =~ $RegExp";
0013nobodyさん
2006/07/27(木) 20:03:14ID:???0014nobodyさん
2006/07/27(木) 20:13:21ID:???すんません、確かにNGではなく変数使えました。
$in{"select_fruit"} でフォームからの値が入ってなかったようです・・・
全体をevalするのがあるんですね、JavaScriptで多少覚えたので理解できます。
確か処理が遅いから、やらないほうがいいですよね?
無難に>>11の2番目の方法にしておきます。
0015nobodyさん
2006/07/27(木) 20:39:57ID:???読み込むことってできないですかね?
やはり一度全部読み込んでから、
特定の文字列1より前と文字列2より後の部分を削除する
という方法でやるしかないでしょうか?
0016nobodyさん
2006/07/27(木) 20:48:35ID:???>ファイルを読み込むときに、特定の文字列1と文字列2の間の部分だけ
>読み込むことってできないですかね?
できる。
正確にはお察しのとおり、
1.ファイルを読み込みながら文字列1を探す。このとき読み込んだ文字列は保存せずに捨てる
2.1が見つかったらファイルを読み込みながら文字列2を探す。このとき読み込んだ文字列は変数に収納。
3.文字列2が見つかって終わり。
001715
2006/07/27(木) 20:58:10ID:???手順の説明ありがとうございます。
ただ自分としてはファイルの中身全部読み込んで
正規表現で文字列1と2をマッチさせてそれぞれの前後を捨てる
という方法を考えていたので、
>>16のようなスマートなやり方が分かりません。
もう少しヒントというか具体的な関数名を教えてもらえないでしょうか?
0018nobodyさん
2006/07/27(木) 21:14:10ID:???next unless /文字列1/ .. /文字列2/;
読み込む;
}
文字列1, 文字列2 自体が要らないなら、nextの次の行あたりで捨てて。
0019nobodyさん
2006/07/27(木) 21:18:18ID:???全体のファイルのサイズはどれほどなのかとか
読み込みたい中身の文字列の割合はどのくらいなのかとか
対象文字列の判定はどのくらい厳密にやらなければならないのか
(たとえば "このように引用された文字列" を探したいときに、
"このように\"エスケープされた引用符" をどう扱うのか
これは正規表現でもいっしょ。)
なので正規表現みたいに一行でスパッとというわけにはいかない。
そもそもどういう状況でその操作が書いてみると他のより効率的な手段を教えてもらえるかもしれない。
まぁ1kbyteそこらのファイルからなら単純に読み込んで正規表現使えばオケ
002015
2006/07/27(木) 21:43:03ID:???なるほど、nextを使って文字列にマッチしない限り次の処理へ進ませないわけですか。
ただ、文字列1と2が別の行にある場合は分けて処理する必要があるわけですね。
あいがとうございました。
>>19
後出し情報ばかりになってしまいますが、現在扱おうとしているファイルは
[00001]
情報A
情報B
[00002]
情報C
というように番号(重複なし)だけの行と情報が入ってる行があるファイルで
サイズはまちまちで大きいものだと100Kbyte近くあります。
そのうち特定の番号の間の情報だけを抽出したいと考えています。
そこで、ファイルの中身全部を$logに格納して
$start = '開始番号';
$end = '終了番号';
$log =~ s/$end.+/$1/;
$log =~ s/.+$start/$1/;
番号だけの行削除;
というような処理を考えていたのですが、
>>18の方法の方がメモリ消費を抑えられそうですね。
まずはやってみます。ありがとうございました。
また何か妙案があれば是非ともお願いします。
0024nobodyさん
2006/07/27(木) 23:18:59ID:1uzwaimq年月日時分秒の計算がもっとらくに出来たらいいのにと。
print "こうなればいいのに" if 20060727121000 - 20060727120950 == 10
例えば時分秒用のマイナス演算子があれば・・・・・
0026nobodyさん
2006/07/27(木) 23:29:08ID:???0027nobodyさん
2006/07/27(木) 23:43:22ID:???ずっと昔のライブラリです。
$a = hoge::escape_h($a);
@a = hoge::escape_h(@a);
%a = hoge::escape_h(%a);
$a = hoge::escape_h($a); #scalarref
$a = hoge::escape_h($a); #arrayref
$a = hoge::escape_h($a); #hashref
でも全てうまく行くようにしたいのです。
用は引数がスカラか配列かハッシュか、リファレンス(どのタイプか)なのかを
チェック入れてif分岐でもすればいいとおもいますが、どうやってチェックするのか。
そこで行き詰ってます。宜しくお願いします。
0028nobodyさん
2006/07/27(木) 23:47:50ID:???>@a = hoge::escape_h(@a);
>%a = hoge::escape_h(%a);
この2つの区別はつかないよ。
他のは大丈夫だけど。
リファレンスの区別は ref を使う。
002927
2006/07/27(木) 23:51:33ID:???やっぱりさすがにハッシュと配列の区別なんて無理ですよね。
同じですもんね。
スカラーか配列かはどうすればいいですか?
やっぱり@_の要素数が1か複数かで見るのでしょうか?
003015
2006/07/27(木) 23:57:33ID:???バッチリできました!
ありがとうございました!
でも、next unless /文字列1/ .. /文字列2/;
の動きが分からずじまい。
ファイルハンドルで1行ずつ読み込んでnextをかけて行くのに
なぜ複数行に渡っても処理ができてるのか不思議です。
たぶん条件式をきちんと解釈できてないんだろうなぁ。
こんな式初めて見るので。
暇な方居ましたら、解説してやって下さい。
0031nobodyさん
2006/07/27(木) 23:58:58ID:???スカラー、読み取れたなら配列。
ちょっと強引過ぎる気もしますが・・・
0032nobodyさん
2006/07/28(金) 00:12:00ID:???> >%a = hoge::escape_h(%a);
> この2つの区別はつかないよ。
デマですね。
0033nobodyさん
2006/07/28(金) 00:47:28ID:???>trust::error_print() if $form{test} =~ /\D|\d{2}/;
穴は防げてるよ。どういう意味かにもよるけど
/^\d$/ or trust::error_print();
とか!~とかunlessの方がわかりやすかったりしない?
>>29
@_はループでリファレンスは再帰って形になるんじゃないかな
sub escape {
my @vals = @_;
for(@vals){
if(ref eq "ARRAY"){ # このへんをelsifで
$_ = [ escape(@$_) ];
}else{
$_ = エスケープ処理($_);
}
}
wantarray ? @vals : $vals[0];
}
0035nobodyさん
2006/07/28(金) 01:26:20ID:???範囲演算子をスカラーコンテキストで使うと、内部状態を内包したスイッチのように振舞うよ。
ちょうど最近みかけた解説。
ttp://d.hatena.ne.jp/palmo/20060724/rangeop
0036nobodyさん
2006/07/28(金) 08:36:07ID:???もう解決したっぽいからどーでもいいんだけど、例えば、
{
open 略;
local $/ = "[00001]";
<FH>; # [00001] までのは捨てる
$/ = "[00002]";
my $log = <FH>; # [00001] の次 〜 [00002] まで取る
close (FH);
}
で 「情報A 情報B」 が取れないかな?
0037nobodyさん
2006/07/28(金) 10:40:17ID:asi0sNZ0while (<FH>){...}
色々な処理
close FH;
色々他にもループ処理をしていまして、無限にならないようにちょこちょこ防止コードを
入れています。
それでtest.csvの行数が$form{get}に足らない場合にもエラー終了したいのですが。
my @test = <FH>;
ということをしたくありません。
scalar <FH>やlength <FH>
とやればいけると思ったのですが、一行目が取り出されてしまいます。
まあ配列じゃなくてあくまで行演算子?なので当然といえば当然ですが。
何かいい智恵はありませんでしょうか?
0038nobodyさん
2006/07/28(金) 10:48:11ID:???003937
2006/07/28(金) 11:25:15ID:asi0sNZ0いや一行で、イチイチ変数に読み込まずとか・・
scalar @test;
くらい簡潔にいけないかと思ってました。
でもむりなようですので配列に読み込むことでもうあきらめました。
連続ですいませんが他の疑問がありますのでお願いします。
http://perldoc.jp/docs/modules/Text-CVS_XS-0.23/Text-CVS_XS-0.23.pod
このモジュールをcsvファイルを扱う時にいつも使ってます。
my $csv = new Text::CSV_XS({ binary => 1 , "always_quote" => 1});
これでやってます。
$form{value} =~ s/\n/\t/g;
悲しいことにいつもこれやってます。このモジュールは改行文字をクォートしてくれないのですよね。
自分で読んでもどうも改行文字は自分で痴漢する以外にないと思うのですが、
中途半端な自分の勘違いなのかもしれないので詳しい人お願いいたします。
0040nobodyさん
2006/07/28(金) 11:46:38ID:???プロトタイプ使ってリファレンス受け取るサブルーチンにすれば
呼び出し側では字面上はスカラー/配列/ハッシュをそのまま
渡しているように書ける。あとはrefで何のリファレンスか調べる
ことができるのでなんとでもなるだろう。
% cat cat foo.pl
cat: cat: No such file or directory
sub foo (\[$@%]) {
my($x) = @_;
printf "ref(\$x)=%s\n", ref($x);
}
my $x = 'scalar a';
my @x = ('array', 'a');
my %x = (hash => 'a');
foo($x);
foo(@x);
foo(%x);
% perl foo.pl
ref($x)=SCALAR
ref($x)=ARRAY
ref($x)=HASH
0042nobodyさん
2006/07/28(金) 12:20:45ID:???ちょっともう自分で全ての把握をするのが難しくなってしまいました。
local.libっていうライブラリに色々作ってあるんですが、
その中にsub slash_printfer{}というものがあります。
そのサブルーチンの名前をsub slash{}に変えたいのです。
でもそのサブルーチンを使ってるページを全て書き直すのは骨が折れます。
というか100以上のファイルをなんてやりたくないですし。
置換ソフトでやっても最終的には全てのファイルの動作チェックを入れないといけなくなっちゃいますのでキツイです。
二つの名前を持つサブルーチンは作れませんか?
sub slash or slash_printfer{}
みたいにしてどちらで呼ばれてもこのサブルーチンが動くというような。
0043nobodyさん
2006/07/28(金) 12:22:48ID:???sub slash_printferが呼び出されたらslashを呼んでslashからの返りを受けて
呼び出し元に返すといったやりかたは断固として拒否します。
0044nobodyさん
2006/07/28(金) 12:31:11ID:???逆ならいいべ。
sub slash{
return slash_printfer();
}
つかそもそも
> そのサブルーチンの名前をsub slash{}に変えたいのです。
と。
0045nobodyさん
2006/07/28(金) 12:31:49ID:???my $hoge = my $foo = sub () { print 'hage' . "¥n" ; } ;
$hoge->() ;
$foo->() ;
local *hoe = local *moe = sub () { print 'moeeeee' . "¥n" ; } ;
&hoe ;
&moe ;
0046nobodyさん
2006/07/28(金) 12:42:56ID:???0048nobodyさん
2006/07/28(金) 13:23:00ID:???ループしながらread()で読んで、改行を数える手も。
>>42
>>45も出してるけど、型グロブもあるよ。
use strict;
use vars qw(*slash);
local *slash = \&slash_printfer;
slash();
exit;
sub slash_printfer {
print "printfer!\n";
}
0053nobodyさん
2006/07/28(金) 16:52:16ID:???0054nobodyさん
2006/07/28(金) 16:57:19ID:???0055nobodyさん
2006/07/28(金) 17:04:08ID:???0056nobodyさん
2006/07/28(金) 17:41:39ID:???表現変ですか?
どのように表現するのかご教示お願いします。
# local()だけを指すなら演算子だけどさ。
>>54-55
トップレベルで宣言はしないもの?
スタイルが違いすぎるかなぁ。
0057nobodyさん
2006/07/28(金) 17:48:13ID:???いくつかモジュール見たけど、そういう風に書いてるのみたことなかったもんで。
まああってもなくても問題ないからどうでもいいかw
use vars qw(*slash); ← これも別になくても通るよね。
0058nobodyさん
2006/07/28(金) 17:54:13ID:???myなり何なりしておくのはよさげ。
0059nobodyさん
2006/07/28(金) 17:55:59ID:???はい、その通りです。
0061nobodyさん
2006/07/28(金) 18:04:01ID:???0063nobodyさん
2006/07/29(土) 23:54:33ID:???local は既存の変数の値だけを一時的に差し替えて利用するためのアレですから。
0064nobodyさん
2006/07/30(日) 08:37:54ID:kTzF8iv+この配列のキーはqw/1 2 3 4 5.../のようになってます。
でもqw/1 3 4 5 6 10.../のようにトビトビになってる場合もあります。
key %hashのキーを参照して、まだ存在してないキーの中から一番数字が若いものが(0以下除外)
いくつになるかを調べるにはどうすればいいでしょうか?
forとexistsを使う方法を自分で考えましたが、ちょっとforを使いたくありません。
0065nobodyさん
2006/07/30(日) 09:19:54ID:???$key = (sort { $a <=> $b } grep ($_ > 0, keys %hash))[0];
0066nobodyさん
2006/07/30(日) 09:21:13ID:???0067nobodyさん
2006/07/30(日) 09:37:19ID:???006864
2006/07/30(日) 09:37:20ID:kTzF8iv+>>65
せっかくなのにすいません。
普通に安全なforだったことに気付いたのでいいやってことで。
変わりに別の質問がしたいのですが、CGIで一番面倒なことはエスケープだと最近思うのですが。
チャット、掲示板、〜ファイル、〜ファイル、〜ファイル・・・・
何をやるにも表示の時にはエスケープ。
書き込む前には内容のチェック。
mysqlを思い出しまして。まあmysqlを使うほどではないときの法が多くて。
でもそんな時に例えば相手が送ってきた文字列のデータ型が何かをチェックしてくれるボジュールとかあれbなと。
@form{qw/name count ip address tel memo time/};
これら全て自分で毎度「これには何が入っていてはいけなくて・・・」とか書くのがめんどうってことです。
妄想モジュールのオブジェクト->data型(数字のみ,@form{qw/count tel time/})
みたいにするとチェックできるとか。数字のみであるかどうかをチェックみたいな。
006967
2006/07/30(日) 09:39:53ID:???0071nobodyさん
2006/07/30(日) 09:53:02ID:???すでに解決したかもしれんが。
my $ret = 0;
$ret = ++$_ while exists $hash{$ret};
0072nobodyさん
2006/07/30(日) 09:57:59ID:???こういう処理で for とか while とかのループ使わないって条件だったらひどいことになるなーw
grep でやろうと考えたけど煩雑でやめた。
0073nobodyさん
2006/07/30(日) 09:59:34ID:???こうすると$testの中にリファレンスが入るけどどうもスカラー型なんだよね。それも$test{d}の中身が入る。
my $test = [@test{qw/a b c d/}];
こうすればちゃんと配列リファレンスではいる。
どういう理屈だろこれ。
0075nobodyさん
2006/07/30(日) 10:03:43ID:???前者は、
my $test = \( @test{qw/a b c d/} );
になるんじゃないかな。
my $val = ( list ... );
で最後の値が代入される。
後者は無名配列へのリファレンス。
007673
2006/07/30(日) 10:15:01ID:???なるほど〜。
でも
\@testは\(@test)解釈されないのを聞くのは・・・無粋だよね。
そういう仕様なんだもんね。
タンキウス!
0077nobodyさん
2006/07/30(日) 10:26:02ID:rQ64iO4Qすいません3つあるんですが
$a = 3/4; という例で・・
1.分数の分子と分母をそれぞれ取り出す方法はありますか?
$?? = 3; $?? = 4; みたいに・・・
2.分数の逆数を求める方法はありますか?
$?? = 4/3: みたいに・・・
3.分子を1にして通分する方法はありますか?
$a = 3/4; $?? = 1/1.3333・・・
0079nobodyさん
2006/07/30(日) 10:58:53ID:???お前がリストと配列の違いを理解できてないことのどこが無粋?
>>77
前スレより条件減ってるけどそんなんでいいの?
>1.(2/3)*(2/3) の解を 4/9 にするにはどうすればいいですか?
0080nobodyさん
2006/07/30(日) 13:28:14ID:???use bigrat; # or use Math::BigRat;
$a = 3/4; # or $a = Math::BigRat->new(3/4);
my($n, $d) = $a->as_parts(); # 1. 分母分子の取り出し
$i = 1/$a; # 2. 逆数
3. だけ分からん。自分で考えてくれ。
BigRatでは、分母を小数にはできないかも。
ちなみに (2/3)*(2/3) を 4/9 にするには
use bigrat;
print 2/3 * 2/3;
0081nobodyさん
2006/07/30(日) 14:15:52ID:???ifを使って文字列の中にaとbとcがあったときに真を返すようにするにはどうすればよいのでしょうか。
例えば「crab」とか、「arabic」とかなら真を返す、見たいな感じです。
0082nobodyさん
2006/07/30(日) 14:23:24ID:???>>64,>>72
my @data = sort { $a <=> $b } keys %hash ;
( join ',', @data ) =~ /(¥d+),(?!(??{$1 + 1}))/;
print $1 + 1 , "¥n" ;
# sort は使わざるを得ない。
>>81
if ( $str =~ /a/ and $str =~/b/ and $str =~/c/ ) { print 'true' . "¥n" ; }
0085nobodyさん
2006/07/30(日) 19:12:17ID:???自己レス
すまん、分母分子の切り出しだけメソッド名間違ってた。
my($n, $d) = $a->parts();
0086nobodyさん
2006/07/30(日) 19:20:45ID:NH/5yRqcダブルクォート文字列で&を表示させたいのですが
どうすれば良いのでしょうか?
何度やってもエラーが出てしまいます。
0087nobodyさん
2006/07/30(日) 19:24:21ID:???0088nobodyさん
2006/07/30(日) 19:26:36ID:???でも問題なく表示されるなぁ。何が違うんだろう。
0089nobodyさん
2006/07/30(日) 19:37:55ID:???$RSS_ITEM_URI = "http://www.google.com/url?sa=D"."\&"."q=".
$RSS_SCRIPT_URI."?DT=".$dateY.$dateM.$dateD.$dateSUB."#".$dateY.$dateM.$dateD.$dateSUB;
では、どうもエラーが出てしまいました。
$RSS_ITEM_URI = "http://www.google.com/url?sa=D"."\x?"."q=".
$RSS_SCRIPT_URI."?DT=".$dateY.$dateM.$dateD.$dateSUB."#".$dateY.$dateM.$dateD.$dateSUB;
こういう感じの事も試してみたのですが上手く行きませんでした。
0091nobodyさん
2006/07/30(日) 19:52:11ID:???で無事行けました!
xhtmlでは&amp; なのですね…(汗) 勉強なりました。
0092nobodyさん
2006/07/30(日) 21:33:25ID:???HTML は人による閲覧が主だから多少間違ってても読み手が補完するだろう
と IE なり NN なり FF が適当に表示してくれるだけ。
XML だとそれが通用しない。
0094nobodyさん
2006/07/31(月) 00:56:13ID:yxBpgbMaと
if (!$hoge){$hogeが無いぉ}
ってどっちがいい?
0095nobodyさん
2006/07/31(月) 01:18:45ID:???casebycase
ってか下で迷うのは if ($hoge) じゃないのかよw
if ($hoge ne "") ← これは $hoge が undef のときに警告がでる
if ($hoge) ← これは $hoge が "0" のときにも FALSE になるのが注意
0098nobodyさん
2006/07/31(月) 07:17:33ID:YjkkI8MZどうすればよろしいの?
記事の投稿があったその都度に、その内容で新規HTMLを生成するスクリプトを考えてます
0099nobodyさん
2006/07/31(月) 08:59:40ID:???うん、まぁ、とりあえず、perldocではdeclaration(宣言)と書かれてしまっているんだ。
(5.8ではmyとourしか扱ってないから、古いperldocをあたってくれ。)
0100nobodyさん
2006/07/31(月) 10:49:13ID:???2006年07月31日 elf 気づいてるのかな.mixi.pne.pjは本当にmixi.jpからファイルをmixiからコピーしてるんですよ? 他とはレベルが違う
(2006-07-31T09:45:59+09:00)
0101nobodyさん
2006/07/31(月) 10:50:52ID:???0102nobodyさん
2006/07/31(月) 11:17:46ID:???何を言ってるのか分からない。
(変数名).htmlというファイルを作りたいのか、
変数名を反映させた内容のhtmlファイルを作りたいのか、
>記事の投稿があったその都度に、その内容で新規HTMLを生成するスクリプトを考えてます
コレなんかは単に掲示板の出力をファイルにすればイイだけでは・・?
0103nobodyさん
2006/07/31(月) 11:20:43ID:???趣味の範囲の話しだけど
$hogeにはいる値の候補が文字列なら$hoge ne""とした方が読みやすいと思う。
0104nobodyさん
2006/07/31(月) 11:29:14ID:???0105nobodyさん
2006/07/31(月) 11:35:59ID:???なんかラベルなんていらねって書いてあるけど、CGIでは結構使いところあるけどなぁ。
初めから設計通りに作るとかじゃなく、その場その場でどんどん機能が追加されていく場合に
数行処理をふっ飛ばしたいとか、多分多くの人がifとか$error = 1とかでやるところも
gotoでもっと簡単にできるのにって思った。
詳しい人にすっごい突っ込まれそう。
怖いがちょっと突っ込まれてみたいかも
0106nobodyさん
2006/07/31(月) 11:37:47ID:???というか、数値が入ったり文字列が入ったりするような変数があるコードは設計がおかしい。
そして、数値が入ってるか文字列が入ってるか分からないような状態でif文にかけるようなコードは
明らかに設計がおかしい。
http://pc8.2ch.net/test/read.cgi/tech/1153312202/
0107nobodyさん
2006/07/31(月) 11:39:46ID:???0109nobodyさん
2006/07/31(月) 11:42:32ID:???>数行処理をふっ飛ばしたいとか、多分多くの人がifとか$error = 1とかでやるところも
たぶんそういうところは関数定義で何とかする
0110nobodyさん
2006/07/31(月) 11:55:33ID:???if('0'ne''){print 3}
if(0){print 5}
if('0'){print 7}
>>23
0111105
2006/07/31(月) 11:58:13ID:???そこらへんがスリコミなんですかね。
目的も知らずに、「テーブルレイアウトはダメだ」と言うのに近い。
実際自分もgoto使うの気が引ける。
でもね。それで目的が果たせるのになぜ気が引けるのか。
で、スリコミだなぁって。
いやいや、スリコミじゃないだろって否定してもらいたいってのもあるんですけど。
0112nobodyさん
2006/07/31(月) 12:24:48ID:???少々疑問があったため、質問させていただきます。
「投稿フォーム → 確認画面」 に行くとき、改行等を
$value =~ s/\r\n/<br>/g;
$value =~ s/\r/<br>/g;
$value =~ s/\n/<br>/g;
で、デコードするんですが、
もし「投稿フォーム → 確認画面 → 投稿フォーム」 にと、戻ったとき改行は
$hoge =~ s/<br>/\n/ig;
で、処理してよろしいのでしょうか?ちょっと自信がありません・・・。
0114nobodyさん
2006/07/31(月) 12:30:33ID:???エスケープちゃんとしてるか?
タグを埋め込まれてアボーンしても知らないよ?
んでな。普通はHTML表示部分のところだけ<br>と置換するが、
その置換結果を別の変数に入れるんだよ。大本をなくしたら困る時も出てくるからね。
<修正点があるので修正をする>とかのボタンで前のページに飛ばす時は
input type="hidden"1"に置換してない方の文字列を埋め込むのよ。
でもその時もエスケープは必要だから。
とりあえず動作確認してみなさい。
できないならローカル環境整えなさ稲。
0115nobodyさん
2006/07/31(月) 12:32:00ID:???確認画面で相手が書き込んだ内容を相手に見せる時はHTMLエスケープね。
ダレラ
0116nobodyさん
2006/07/31(月) 12:32:31ID:???使うと手に負えないから表では使用禁止といっとくぐらいがちょうどいい。
0117nobodyさん
2006/07/31(月) 12:35:40ID:???0118nobodyさん
2006/07/31(月) 13:09:04ID:oRCGT1rhuse Time::Local;
&timelocal(・・・
先日まで問題なく動いてたんですが、本日使用しているPGM全てで
落ちるようになりました。
とりあえず回避するコードを書いたんですが、原因って何がかんがえられますか?
0120nobodyさん
2006/07/31(月) 13:32:35ID:???原因ねえ。おまいの頭が悪いってあたりが一番怪しいんじゃないか?
とりあえずそこらへんから検討してみてはいかが?
0122nobodyさん
2006/07/31(月) 13:41:15ID:???0123nobodyさん
2006/07/31(月) 13:46:29ID:???画像掲示板の画像が出なくなって驚いた記憶がある。
0125nobodyさん
2006/07/31(月) 15:50:18ID:???絶対パスは$ENV{DOCUMENT_ROOT}から取得したらいいよ。
後、バッククォート演算子でpwdしたり、Cwdモジュールで取得したりするのもいいかも
0126nobodyさん
2006/07/31(月) 16:00:06ID:???うそやん(´・ω・`)
hidden で %ef%80%80 とか書くと普通に % が %25 になるお。
012798
2006/07/31(月) 16:45:36ID:YjkkI8MZレスありがとうございます。
スマソです。
(変数名).htmlのファイルを生成したいのです。
ひな形としての.htmlファイルは予め用意されていてるけど、
内容の一部も変数を反映させるけどこれはなんとかなりそうなんです。
最初はrenameを使うのかと思ったんですけど、これだとダメですね。
0128nobodyさん
2006/07/31(月) 17:12:27ID:???通信技術はハードよりの話題みたいなので・・・
0129nobodyさん
2006/07/31(月) 17:19:09ID:???ム板でもいいけど
0132nobodyさん
2006/07/31(月) 21:03:01ID:???書きの例だと「abc」を取得したいと思っています。
perl -e "@file=('abc.txt');print split (/\./, $file[0])[0];"
perl -e "@file=('abc.txt');print (split (/\./, $file[0]))[0];"
以上の2例でもsyntax erorが出ます。
splitは配列を返すので、その配列の[0]を参照するという書き方でいいと思うのですが、
どのようにしたら正常に表示できるのでしょうか。
perl -e "@file=('abc.txt');print scalar (split (/\./, $file[0]));"
このように記述すると2が表示されるので、splitの結果は配列になって帰ってきているとは思うのですが。
0134nobodyさん
2006/07/31(月) 21:22:36ID:???0135nobodyさん
2006/07/31(月) 23:02:34ID:???>>134 氏みたく丁寧に () を書いて、 print に正しく情報を与えるか、
perl -e '@file=("abc.txt");print [ split /¥./, $file[0] ]->[0] . "¥n";'
の様にリファレンスで出力するか。
133のことも忘れないでね♪
0138nobodyさん
2006/07/31(月) 23:34:13ID:???わたひの受けた衝撃の高さを物語っています。orz..
013998
2006/07/31(月) 23:34:40ID:YjkkI8MZなにこれ?
きっと板違いだね
0140nobodyさん
2006/07/31(月) 23:36:06ID:???まじで分からん。
0141nobodyさん
2006/07/31(月) 23:37:42ID:???perl -e '@file=("abc.txt");print + ( split /¥./, $file[0] )[0] , "¥n" ;'
0142nobodyさん
2006/07/31(月) 23:47:51ID:???sub html_escape{
my @value = @_;
for (my$i=0;$i<@value;$i++){
$value[$i] =~ s/&/&/g;
$value[$i] =~ s/</</g;
$value[$i] =~ s/>/>/g;
$value[$i] =~ s/"/"/g;
$value[$i] =~ s/'/?/g;
}
return @value==1 ? $value[0]:@value;
}
my $test = "a <br> b <br> c <br>";
my @test = (qw/a <br> b <br> c <br>/);
my %test = (qw/a <br> b <br> c <br>/);
my $test_html = &html_escape($test);
my @test_html = &html_escape(@test);
my %test_html = map{$_,&html_escape($test{$_})}keys %test;
#@test_html{sort keys %test} = &html_escape(sort values %test);
print $test_html,"<br><br>",@test_html,"<br><br>",%test_html;
簡単に作ろうと思いました。これで動作しますが、実はマグレでどこか穴などありますか?
できれば
my %test_html = &html_escape(%test);
が理想だったのですが。
014398
2006/07/31(月) 23:51:40ID:YjkkI8MZもぅ一度質問して良いですか?
つまりsn uploaderとかそれ系のperlアプリでありがちな処理として
投稿された動画データの変数$1234などを元に閲覧用の外部htmlファイルを生成出来るように
したいんです。
ソースを眺めてもいまいち理解しずらいので勉強がてら一から組んでみようと思ってるんです。
どなたかヒント頂けませんか?
makehtmlという関数らしき記述があるけど。
自作の関数を組み込んでるんでしょうね。
かなり敷居の高いテクニックなんでしょうか。。
0145142
2006/07/31(月) 23:55:45ID:???014698
2006/08/01(火) 00:12:44ID:t9If8ozv誰か教えて!
0147nobodyさん
2006/08/01(火) 00:36:58ID:???3行目以降を+の話に入れ替えるくらい基本。
>>143
確かSn Uploaderは静的htmlを出してる。それがmakehtmlだったかな。
負荷対策だろうけど、動的にファイルインデックス作るのとコードは似たようなもん。
で、説明下手だからどんな状況からどんなhtml作りたいのか書いて。1レスに収まるように。
0148135
2006/08/01(火) 00:54:07ID:???どう考えても [LIST]->[] の方が邪道でした。
0149nobodyさん
2006/08/01(火) 00:58:53ID:???の
s/&/&/
などは、配布スクリプトで汚染チェックとか書いてあるのですが、何か意味はあるのでしょうか?
0150nobodyさん
2006/08/01(火) 01:04:28ID:???015198
2006/08/01(火) 01:17:50ID:t9If8ozvありがとうございます!
元のスクリプトはKentWebさんのclip_bordなんです。
それに拡張子のwmvを追加し投稿されたwmvデータを$xxx.wmv.htmlで出力出来るようにしました。
(ここまでは簡単)
実は当面必要と思われるだけの1.wmv.html 2.wmv.html...と作ってディレクトリに突っ込んでやろうかとも思いましたが。。
あまりにバカっぽいのでやめました(笑
ひな形となるwmvプレーヤを組み込んだhtmlファイルをperlスクリプト内に置くか外部に置くかはまだ
決めてませんが、その雛形html内に$xxxを渡しつつその変数でのhtml作成を考えています。
# 添付データを書き込み
#.wmvに.htmlを追加。
if ($tail eq ".wmv") {$tail .= ".html" ;
#.wmv.htmlファイルの自動生成この辺り。
}
$imgfile = "$ImgDir$no$tail";
if (!open(OUT,"> $imgfile")) {
if ($clip_err) { &error("画像のアップロードに失敗しました"); }
}
binmode(OUT);
binmode(STDOUT);
print OUT $upfile;
close(OUT);
chmod(0666,$imgfile);
#の部分に雛形htmlファイルと生成の為のスクリプトを組み込めないものかと考えています。
思いっきり見当違いかも知れませんしこれじゃ伝わらないかもですが。。
勉強しようと思います。
よろしくお願いします。
015298
2006/08/01(火) 01:29:44ID:t9If8ozvhttp://irom.sytes.net/clip_img/n2/253.zip
これが現状でのスクリプトです。
0153nobodyさん
2006/08/01(火) 01:38:38ID:???要するにアップロードされたファイル1個1個に対して間接DL/再生ページを吐き出したいわけね。
$xxxにファイルの番号が入ってるのかな?
そのhtmlの雛型あるじゃん。その中でファイルごとに変動させたい部分を探すの。そこを変数にしといて
$htmlcontents =<<<"EOH"; # この構文はヒアドキュメント
<html>略
<title>$xxxの再生ページ</title>略
<... src="$xxx.wmv">略
EOH
とでもhtml化してあとはこの$htmlcontentsを"$xxx.wmv.html"といったファイル名で出力すればいいよ。
$tail .= ".html";するのはファイル出力直前のが良さそう。
015498
2006/08/01(火) 01:48:22ID:t9If8ozvその通りの事なんです。
それは理解出来そうです。ありがとうございます。
で、その>$xxx.wmv.html"といったファイル名で出力すればいいよ。
との事だけど、その出力関数?つまりUnixで言う所のmk...コマンドのような、
どういう記述でファイルを新規出力させれば良いのだろうかと。
perlのファイル周り関数を見てもそれに当たるものが見当たらないようだし。
どうでしょ?
$tail...の部分も含めてアドバイス、本当にありがとうございます。
0155nobodyさん
2006/08/01(火) 02:00:28ID:???普通にファイルオープンしてhtmlを書き込むんだよ。
検索すれば山ほど出るから調べてね。使うアクセスモードは">"になるよ。
015698
2006/08/01(火) 02:06:04ID:t9If8ozvファイルオープンで良いんだ。。
超基本ですね。きっと。
それでググって更に納得です!
ありがとう。
俺も数年後ぐらいには、ここで初心者(超)の質問に答えてあげられるぐらいになりたいですよ。
がんばろ。
感謝。
0157nobodyさん
2006/08/01(火) 02:28:05ID:k536PVpv0158nobodyさん
2006/08/01(火) 02:31:26ID:???0160nobodyさん
2006/08/01(火) 05:38:10ID:???PerlでFTPコマンド送信すればおk
0161nobodyさん
2006/08/01(火) 06:40:14ID:rFB6zqEC入力エリアが未記入かどうかの判断は
if ($変数名 ne "")
以外にもあるのでしょうか?
$htmlbuf .= "$cdname<input type=\"hidden\" name=\"$code\" value=\":$cdno=\">
<input name=\"$code\" size=\"15\" value=\"$input\"> <BR>\n";
↑このような記述で
コード名称 入力エリア <br>
というのをいくつか繰り返して表示させてます。
初期表示では入力エリア($input)はスペース("")を送っています。
これで入力エリアに何か入れてsubmit後の処理なのですが
$codeには
「:$cdnoの値1=$inputの値1:$cdnoの値2=$inputの値2……etc」と入っているので
「:」ごとに配列に格納し、要素を「=」で$cdnoと$inputにわけ
if ($input ne ""){処理} という風にしたいのですが、未記入にも関わらず{処理}になります。
直前にPRINT文を入れて値を確認しても、未入力エリアには何も入っていません(多分長さ0)
何か表示されないコードのようなものが入ってるのかな?と思うのですが
それを確かめる術もわかりません。
単純な質問のわりに長文になって申し訳ありません。
よろしくお願いします。
0162nobodyさん
2006/08/01(火) 08:08:11ID:???見間違い。printされてたか、変数名が違うか、実は別の処理が呼ばれてたか。
unpackするかlength使っとけば長さ0かどうかは分かる
print unpack("H*",$input); print length $input;
あとスペース(0x20)と空文字列は区別してね。
0163161
2006/08/01(火) 09:10:57ID:???早々のレスありがとうございました。
print unpack("H*",$input); print length $input; を入れてみたところ
$inputには"2020"長さは2。最後の項目のみ"20"長さ1となりました。
空文字ではないということはわかりました。
printされていたか?というところなのですが
初期表示で$htmlbuf をprintして入力エリアを表示しているので
この時点で「””(空文字)」は「2020」になるのでしょうか?
入力のある項目は「20入力文字20」となるので、勝手に半角スペースが挿入されてるみたいです。
最後の入力エリアのみ「20」の長さ1になるのも謎ですが
半角スペースを空文字に置き換える処理を入れておかないといけないということでしょうか?
0164nobodyさん
2006/08/01(火) 10:18:06ID:???HTMLソースをよくみてみろ
ぬるぽ
0165161
2006/08/01(火) 11:13:02ID:???このあたりは私の説明もごっちゃになってたと思います。
初期表示で「""」をセットした項目ならば、未入力の場合同様に「""」で判断できるかと思ったのですが
それはできないということでしょうか?
0166nobodyさん
2006/08/01(火) 11:25:57ID:???0167nobodyさん
2006/08/01(火) 14:44:10ID:???誰か use について詳しく説明してるサイト
教えてくれ
俺のミニマム脳みそじゃ見つからん
0168nobodyさん
2006/08/01(火) 14:53:09ID:???0169nobodyさん
2006/08/01(火) 15:05:14ID:???submit後の処理というのは、クライアント側からsubmitしてきた場合
の処理の意味ですか?それだったらどういう風にフォームデコードして
目的の文字列(「:$cdnoの値1=$inputの値1:$cdnoの値2=$inputの値2……etc)を得ているのか
詳しく説明よろしく。基本的にいって未入力の場合の$val ne ""は普通に使えますよ。
0171nobodyさん
2006/08/01(火) 15:21:02ID:???ブログスクリプトの共通ファイルを
下位ディレクトリに入れて共用しようとしたけど
どうやら use 何がしで読み込んでるらしく
どうしたら良いのか見当がつかなかったのです
調べてみたら
plファイルで指定してるけど
配布されてるものらしく指定箇所が
やたら多いので諦めました(´・ω・`)
しかもこのpl使って固有のログとってるから
共有するわけにもいかず・・・
お騒がせしました
0172nobodyさん
2006/08/01(火) 15:23:59ID:???(#!/usr/bin/perl の次の行あたり)に
use lib './下位ディレクトリ';
追加してみて。
0173nobodyさん
2006/08/01(火) 15:27:26ID:???0175nobodyさん
2006/08/01(火) 20:48:20ID:???掲示板を作成しているのですが、
[1] [2] [3]
みたく、ログ数をリンクさせたいのですが、自分の小さい頭ではどうしてもその方法が分かりません・・・。
本当に小さいことで構わないので、ヒントをよろしくお願いします・・・。
0177161
2006/08/01(火) 21:42:14ID:???すみません。最初の質問でInputのnameを変数名で指定していましたが
正しくは直接その名前を書いてます。「$code」→「code」
知識が無いので説明が的を得てなかったらごめんなさい。
$htmlbuf .= "$cdname<input type=\"hidden\" name=\"code\" ……… <BR>\n";
↑$htmlbufをHTMLファイルで指定したエリア(userarea)に入れてプリント。
初期画面だと入力エリアには未入力で表示されています。
codeには :コード1=空文字:コード2=空文字:… という形になっています
入力エリアに何か入れてsubmitボタンを押す
(これがクライアント側の処理という認識でよいのでしょうか?)
デコードはcodeをサブルーチンに渡して
{
local($value, $codeto, $flag) = @_;
$codeto ? ($kcd = $codeto) : ($kcd = $basic'kcd);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
unless($flag){
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/"/"/g;
}
&jcode'convert(*value, $kcd);
$value;
}
コードはsjisで変換です。
内容については既存のものなのでどのような変換内容なのかは理解していません。
すみません。
0178nobodyさん
2006/08/01(火) 23:43:21ID:???0179nobodyさん
2006/08/02(水) 00:22:16ID:???デコードはそれであってるのでいじらないほうがいいでしょう。
>codeには :コード1=空文字:コード2=空文字:… という形になっています
という形になってますというけど普通はこんな形にならないわけで、
この形を作ってる部分のコードが分からないとどうしようもないです
0181nobodyさん
2006/08/02(水) 01:30:13ID:???sn uploaderとかでやってるのは、確か、ファイル作った
日時を別ファイルに保存しておいて、起動ごとにそのファイル参照しながら
チェックとかしてたような・・・
unlinkとかファイル演算子とか調べると参考になると思う
0182nobodyさん
2006/08/02(水) 01:34:36ID:lNNds71o0184161
2006/08/02(水) 02:44:01ID:???すみません。もう少し手前からかくべきでしたね。
foreach(@aaa){
if データがあれば{
$input = データ;
}
else{
$input = "";
}
$htmlbuf .= "$cdname<input type=\"hidden\" name=\"code\" value=\":$cdno=\">
<input name=\"code\" size=\"15\" value=\"$input\"> <BR>\n";
}
実際には@aaaから条件で抽出したデータのみ処理をするのですがここでは略してます
繰り返す事によってcodeの中に「:$cdnoの値=$inputの値」のセットが後ろに追加されていきます
初期表示の場合は入力がないので$inputに全て「""」を直前にセットします(これは確認しました)
なので初期状態及び、入力のない項目は「:$cdnoの値=空文字」になるかと思います。
しかしデコード後のcodeの内容を変数に入れてプリントさせてみると
$inputの値のところ(=の右)は半角スペースになっているのです。
ほかの部分は特に何か文字が入ったりはしません。
0186nobodyさん
2006/08/02(水) 03:55:04ID:???0187nobodyさん
2006/08/02(水) 04:17:52ID:???つ【http://www.oreilly.co.jp/books/4873111307/】
0188nobodyさん
2006/08/02(水) 04:31:15ID:???正規表現が正しい(意図したとおり)かどうか機械的に判定する方法なんてあるわけ無い。
と、突き返したいところだが…
--- 以下、エスパー的解釈 ---
外部から入力されたorプログラム外に用意した正規表現を実行しようと、
$regexにその正規表現の文字列を入れて、/$regex/ と言う風にしてみました。
しかし、入力された正規表現に構文エラーがあったときに、例えば
Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE / at -e line 1.
のようなエラーとなり停止してしまいます。そこで、事前に正規表現にエラーが無いかを
判定すればよいかと思ったのですが、その方法がわかりません。どうすればよいでしょうか?
--- 以上 ---
こういう質問だと仮定しての回答。マッチングするときにevalブロックを使えばよい。
構文エラーがあったときはそのevalブロックを抜けて、$@にエラーメッセージがセットされる。
eval { ... /$regex/ ... }
if ($@) { エラー時の処理 }
# そういう質問じゃないと言うのなら、順序だててちゃんと説明汁。質問はこういう風に丁寧に。
Digest::MD5は標準モジュールだにょ
0191nobodyさん
2006/08/02(水) 10:26:58ID:???0192nobodyさん
2006/08/02(水) 10:38:04ID:???0193nobodyさん
2006/08/02(水) 10:44:09ID:???モールス信号です。解読してください。そして回答をモールス信号で下さい。
0194nobodyさん
2006/08/02(水) 10:51:20ID:???0195nobodyさん
2006/08/02(水) 10:52:07ID:???0197nobodyさん
2006/08/02(水) 12:55:52ID:???0198nobodyさん
2006/08/02(水) 13:56:29ID:???たとえば今
use CGI;
$a = new CGI;
print $a->param('code');
print <<FORM;
<form action="$ENV{SCRIPT_NAME}" method="post">
<input name="code" value=":1="><br>
<input name="code" value="a"><br>
<input name="code" value=":2="><br>
<input name="code" value="b"><br>
<input name="code" value=":3="><br>
<input name="code" value=""><br>
<input name="code" value=":4="><br>
<input name="code" value=""><br>
<input type="submit">
</form>
FORM
;
というコードを走らせてみましたが、
普通に:1=a:2=b:3=:4=
という出力が返ってきました。
ということで、CGI.pmを使うことをお勧めします。
あと、htmllintなどでもかかれてますが、同じname値をもったinputを複数
設置して値をつなぐというのは非標準です。ので、その動作は基本的には
保証されてません。
0200nobodyさん
2006/08/02(水) 18:11:03ID:Sa4fTnpW分からないなりに色々と調べて以下のような対応をしてみました。
迷惑書き込みのほとんどが英語の書き込みなので、書き込み内容が
全て半角文字だったら書き込みしないようにしたつもりです。
if($comment =~ /[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]/){
$textchk = 0;
}
else{
$textchk = 1;
}
if ( $textchk = 1 ){
print "書込み内容が不適切です\n";
}
この対応でだいぶ書き込みが減ったのですが、まだ一部「Good design!
」みたいな書き込みがされていました。これも全て半角文字なのですが、
なぜ書き込みされてしまうのでしょうか?自分のPCから「Good design!
」と書き込もうとしたときはちゃんとチェックがかかります。文字コード
(シフトJISやEUC)の違いなのでしょうか?
ちなみに
if ( index ($comment, 'Good design!') >= 0 ){
$textchk = 1;
}
という文も入れてみたのですが、ダメでした。
よろしくお願いします。
0201nobodyさん
2006/08/02(水) 18:25:23ID:???正規表現を変えた方が良いかも。
if ($comment =~ /[^ -~]/) { # 英語以外の文字がある
$textchk = 0;
} else {
$textchk = 1;
}
↑これだと文字コード依存無いし、元のより速いはず。
0202nobodyさん
2006/08/02(水) 18:37:13ID:Sa4fTnpWありがとうございます。
正規表現をよく理解していないので意味はよくわかりませんが、
試してみたいと思います。(結果は数日待ってみないとなんとも
言えないので、また何かあったらよろしくお願いします。)
0203nobodyさん
2006/08/02(水) 18:39:05ID:???htaccessでアクセスを弾く方法もあるよ。
参考までに。
0204nobodyさん
2006/08/02(水) 21:21:27ID:???本文中に http://〜 が何個以上入ってたら弾くとか? ウーン
>>201
それだと改行入ってたらおk っぽいんだけど、いいのかな?
0205nobodyさん
2006/08/02(水) 21:24:16ID:???ヒミコなんとか…
0206nobodyさん
2006/08/02(水) 21:46:19ID:???それもそーだ
>>202
if ($comment =~ /[^ -~¥r¥n]/) {
正規表現、こっちにしとけ
0207nobodyさん
2006/08/02(水) 21:56:39ID:Aqv2fKnbう〜ん。あれでチャンピンオンの名乗りを受けて喜べるのか・・・・・・・・・・・・・・
弟達はイマイチ喜んでなかったぞ。
本当はゲイスポに書きたいんだけどさ。
入れないんだよ。人が多すぎて。パンク状態。
0208nobodyさん
2006/08/02(水) 22:02:50ID:???0209nobodyさん
2006/08/02(水) 23:13:01ID:Aqv2fKnb何の需要を満たせるんだろうか。
自営業をしている。24歳。ネットショップを開いた。自作で。
アクセスとかその他もろもろを管理する管理CGIも作った。
ちょっと要塞っぽくなってきた。
でも一体なにができるんだろうかPerlCGIで。
注文を取れる?いやいや。電話でもいいだろ。現にうちは個人商店みたいなもんだが、
電話での通販は昔からやっていて利便性は十分だ。
商品案内はカタログを配ればいいだけ。折込チラシとかもね。
ネットからの注文は月に数えるほどでまるでダメ。
アクセスは一日平均100前後の異なるIPが着ている。
色々やった。CGIで実験的なことも色々とやった。いうとどこの店かわかるだろうからいわないが。
直接セールスに赴いたほうが100倍威力があるということを証明しつづけてるだけ。
いや自営業だからね。別に何をやってもいいのよ。
それで思ったのPerlCGIが満たせる需要って何?って。
ネットッショップの構築というが、実際にネットショップなど大して必要でないんだよ。
買い物籠などね。電話番号と商品案内を載せてれば十分。
で、考えるの。この技術で満たせる需要ってなんだろうって。
消費者の需要ね。BtoBではなくて。BtoBを除外するのは、実際うちの会社でCGIが
うちの客の需要を満たせてないからである。やってみたいという商売側の需要を満たせても、
かわいそうな現実がその後に待ってるだけだからBtoBは除外する。
0210nobodyさん
2006/08/02(水) 23:19:20ID:Aqv2fKnbつまりインターネット利用者の需要ってことになるわけだ。
楽しいコンテンツこそがネット利用者の主な要求になるわけだ。
その楽しいコンテンツ制作のほんの少しの手伝いくらいはCGIにできるかもしれない。
しかしCGIが主役になっての供給はないんじゃないのか?
一体何のための技術なんだろう・・・これは。
と最近考えてる。
要はだな。どこかで俺は「PerlCGIの技術で直接赴くセールスに準じる強力な何かを実現できるのではないのか」
と考えていた。だから今「CGIって役に立たなくないか?」というのがなかなか受け入れられない。
あぁ。そうか。情報の整理と引き出し。ウィキみたいな。
あーいうのにはCGIがとても役に立っている。
まあ補助だが。準主役級だな。
しかしそれだけか?なんかないのかcgiよ。
情報技術の一端なんだろ?
それじゃあなんでもっと伝える力がないのよ。
それを実現できないのよ。
ネットにつながないと。ヤフー検索で検索しないと。
そんな受身なのか?なぜそんなに脆弱だ?
人間本体ならいつだって相手の家に押し入ってなんでも買わせることができるのに。
0211nobodyさん
2006/08/02(水) 23:19:51ID:???とてもいい言葉を教えてあげます。
「馬鹿とハサミは使いよう」
あなたはインターネットを使いこなせていないだけ。
0212nobodyさん
2006/08/02(水) 23:27:41ID:Aqv2fKnbじゃあ優秀なあなたに問う。
あなたに一個1万円の健康食品を100個渡すとします。
完全に無名です。
それを1ヶ月で売り切れますか?
そういう話をしてるのです。
実際セールスマンは100個売り切るでしょう。
というか直接赴く方法でなら俺は実際に売れる。
営業は得意ではないが、訪問セールスの強力さは知っている。
さあ。あなたは売れますか?ネット上で100個を。
もちろん売った時の使用経費も重要です。
0213nobodyさん
2006/08/02(水) 23:34:25ID:???ネット販売をどう利用すればいいか、Amazon とかが如実にやってみせてるだろう。
0214nobodyさん
2006/08/02(水) 23:36:34ID:Aqv2fKnb現実の世界には勝てないんだよ。
例えば洋服。まず色、モニタや撮影手段によって微妙に変わるから信頼度が低い。
次サイズ、数字だけで試着が不可能なためイマイチ情報が足りない
最後に他の服や自分とのバランス、やはり試着ができないためイマイチ不明。
つまるところ3つの点全てで現実の世界の情報量に劣っているわけだ。
中途半端な商品情報などクソの宣伝にもならねえ。
だから現実の世界の手段にくらべ脆弱なのは当然だ。
だよな。。。あきらめきれないのよ。
>>211はネットを使いこなせるみたいで、俺にわからないことを知っている。
層信じてまつ。頼むよ>>211。がっかりさせないでくれよ。
「馬鹿とハサミは使いよう」
なのです♪
0216nobodyさん
2006/08/02(水) 23:40:06ID:Aqv2fKnb>ネット販売をどう利用すればいいか、Amazon とかが如実にやってみせてるだろう。
そうだね。文字や画像で伝えれる情報以外がほとんどない商品においては
そこまで現実世界の手段との差は開かない。
ただ一つの本を誰か特定の一人に売るにしても直接家に言って説明したほうが売れるけどね。
まあこの辺りはプログラム畑?の人にはわからない感覚だと思うけど。
うん。でもamazonは確かにいい利用をしてるよね。
でもあれってさ。CGIあんま関係ないよね。相変わらずの補助レベルだし。
0218nobodyさん
2006/08/02(水) 23:42:47ID:???ネットらしい宣伝はしたの?
それなしじゃダメだろうね。
0219nobodyさん
2006/08/02(水) 23:43:20ID:Aqv2fKnbそんな低次元の話はしていない。
あなたの意見は至極当然のことなのですよ♪
いきなり国際網店出したって売り上げが出せることなんて皆無でしょうに。
商品そのもの以外の付加価値があってこその国際網店かと♪
0222nobodyさん
2006/08/02(水) 23:46:02ID:???どうみてもスレ違いだ
以後は他所でやれや
0223nobodyさん
2006/08/02(水) 23:47:16ID:???セールスでノルマ達成できなかったのか知らんが、道具に罪はない。
包丁もって野菜を切るか人を切るかは持ち主次第。
要は、
「馬鹿とハサミは使いよう」
0224nobodyさん
2006/08/02(水) 23:47:57ID:Aqv2fKnbバカとはさみは使いようね。
そうだね。うん。
現実の世界の手段と競争したり、比べたりすることがうまくないんかもな。
確かに現実世界の手段は強力だ。凄いよ。でもネット手段にはネット手段ならではのことがあるのか?
もちろんそれでもネット手段なんてのは脆弱だ。
しかしそこでamazonだ。現実手段とまともな比較ができるくらいの段階にまできている。
そうか・・・・・でもさ。うん・・・・テレビ通販と同じで
大金掛けて宣伝するってのが第一条件にあるんだよな。
現実手段ならまるで金などかけずにドブ板営業でやれるのに。
ってそれも比較をしてもしょうがないのか。
するとこの疑問提起自体が無意味だと?
0225nobodyさん
2006/08/02(水) 23:51:31ID:Aqv2fKnb自営業だってのに夏休みがあるわけねえだろ。
>>223
わかってんのかな。こいつ。
現実手段とネット手段との比較であって、使う人間云々じゃないんだよ。
ハサミ→現実
ピンセット→ネット
ハサミがなかった時にピンセットでなんとか紙を綺麗に裁断する。あくまでピンセットの原型のままで。
いや。お前の言いたいのはハサミがなければあきらめろって情けない意見だってのはわかってる。
0226nobodyさん
2006/08/02(水) 23:51:59ID:???なんだnullか。
0227nobodyさん
2006/08/02(水) 23:56:00ID:Aqv2fKnbamazonみたいにネットに適した商品を扱うっていう形は形でいいけどもさ。
なんだよその消極的なのはさ。いきなりネットの限界を認めちまうわけ?
ネット販売に向かない商品をネット上に掲載するのはあくまでサブで本体ではない?
なんだよそのあきらめきった態度は。
現実手段にもまけない強力な手段をネットで実現できないのかと。
ネットの限界をひきあげようって話。
それでPerlCGIね。てめえ何もできねえのかと。
現実手段に対抗することは何もできないのかと。
「バカとはさみ。。」はもういい。
ハサミを教えられた使い方しかできない。
それ以外にかんがえようとしないのでは発展はない。
0228nobodyさん
2006/08/02(水) 23:57:21ID:???てか何か人と道具を比べて、道具はダメだ! って言ってるようにしかみえねえw
0229nobodyさん
2006/08/02(水) 23:57:44ID:???金を食っても栄養にはならない。
「馬鹿とハサミは使いよう」
0230nobodyさん
2006/08/02(水) 23:58:26ID:Aqv2fKnbっていうか日本人の3割はそうだろ。日常生活にネットはないよ。
高齢者だからな。
んでな。
ネット手段でどうにかしてお年寄りにある特定の商品情報をあますことなく
現実手段以上に伝えることはできないのかってこと。
パソコンすら持ってない人間にだ。
0232nobodyさん
2006/08/03(木) 00:00:30ID:Aqv2fKnbいや。オークションも同じだ。現実世界の方が伝えれる情報量は圧倒的におおい。
例えばだよ。壊れかけたradioを出品するな。
どうやって壊れかけ具合を伝える?
現実なら何度か使わせれば伝わるだろ?
お前はそれをネットで現実手段レベルで伝えられるか?
0233nobodyさん
2006/08/03(木) 00:01:35ID:Aqv2fKnbおまえ>>211か?頼むよ。本当にさ。
ネット使いこなせてるんだろ?お前。
論破したとか冗談言ってないで本気で語れよ。
逃げんなよ。
0234nobodyさん
2006/08/03(木) 00:02:47ID:???あぽーん
0235nobodyさん
2006/08/03(木) 00:03:02ID:???はさみだって材質がステンレスじゃなければ、刃をさらに研げばカミソリのような切れ味も出るし、
先をへし折って薄く削ってみればマイナスドライバにもなるうるし。
でも、いくら手を加えても純金の延べ棒にはならないわけでして。
0238nobodyさん
2006/08/03(木) 00:04:22ID:???「 ス レ 違 い 」
0240nobodyさん
2006/08/03(木) 00:08:09ID:QGlUDLBT極論?どこかだよ。あきらめんなよお前。俺より頭いいだろお前ら。
>>236
そうなんだよな。orz
でもよ。それを認めることは限界を認めることなのよ。
俺はまだ限界を認めたくないのよ。
お前頭いいだろ。もっと智恵を出せよ。
超音波を送るとかいくらでもあるだろ?
耳に超音波受信機をつけるんだよ。いや、つけないんだよ。
人間の耳に正規表現をあてるんだよ。
>>237
あきらめるな!
なんだお前は!そんなんでいいのか?
誰でも出せる答えでそのままあきらめていいのか!
純金の延べ棒にだってできるさ。
分子レベルで変換をする装置を作ればいいだけだろ?
何をあきらめてんだお前ら!
0241nobodyさん
2006/08/03(木) 00:09:31ID:QGlUDLBTスレ違い?何いってんだ。
逃げても何の解決もしないぞ!
>>239
何のために俺がID出してる思ってるんだ?
アボーンしたくなったらいつでもしてくれ。
0242nobodyさん
2006/08/03(木) 00:09:43ID:???包丁もって上がりこんで、布団買うまで帰らないって脅すことか?w
「馬鹿とハサミは使いよう」
分子レベルでは錬金術師やん(呆)そんな同じ歴史の繰り返しみたいな低レベルでええんか?
・・・ってことで、いっぺん大きく息を吸って心落ち着けてまわりを見渡してみなされ(これ夏休み中の課題)
話はそれからだ♪
0244nobodyさん
2006/08/03(木) 00:14:21ID:QGlUDLBTお前セールスやったことあるか?
どういうときに売れ、どういう売れないかわかるか?
いや頭がよければ経験などなくてもわかるはずだ。
どれだけ現実手段が協力化を。
>「馬鹿とハサミは使いよう」
お前こうやってこの言葉に逃げてばかりだな。
ネットでは不可能。それでいいのか?お前。
もっと適した手段をとればいい?
なぜこの段階でネットが適してないと決め付ける?
お前は物事の限界を押し上げる心意気はゼロか?
頑張れよ!
0245nobodyさん
2006/08/03(木) 00:16:10ID:QGlUDLBT同じ歴史の繰り返し?
お前はただあきらめの繰り返しをしてるだけだろうが!
何のためにお前には手があり足があり脳みそがあるんじゃ!
あきらめてんじゃねえ!
0246nobodyさん
2006/08/03(木) 00:18:40ID:???なにも「あきらめた」なんて宣ってませんよ♪
で、だ。
結局このスレッドに何の用があったの?余りにもスレッドの趣旨にずれていませんか?
ひとまず餅付けるれ♪
つ http://life7.2ch.net/yume/ 夢・独り言
『Perlコーディング初心者質問スレ Part 51』
だお( ^ω^)
0250nobodyさん
2006/08/03(木) 00:22:01ID:QGlUDLBT使いようって話は確かにそれでいいんだけどさ。
それじゃあPerlCGIの使いようってのは何だろうって聞きにきた。
しょっぱい方法はいいんだどうでも。
PerlCGIが一番威力を発揮できる。一番強力に思える使いようってなんだろうってこと。
言語間レベルの話ではなくてね。
んぢゃなんで「PerlCGI」なんて単語が出てくるんだよ。
根本的にスレ違いだろ?
あとなにかしらの可能性を見つけたいのならVIPに逝って身を投げてみろ。
http://ex16.2ch.net/news4vip/ ニュー速VIP
0253nobodyさん
2006/08/03(木) 00:30:25ID:QGlUDLBT俺はお前らと話がしたい。
そしてお前らはここにいる!
一緒にPerlCGIの一番強力な使いようってのを考えよう!
0254nobodyさん
2006/08/03(木) 00:32:11ID:???注意されてもスレ違いの話題を続けて、どれだけ迷惑かわかってる?
それとも、わかってて、わざとやってるの?
いずれにせよ、ルールを守れないような人がどんな主張をしたところで、
真面目に読んでくれる人は誰もいない。非常識な人間に、営業うんぬんを語る資格もない。
あなたの「訪問販売」の名を借りた「押し売り」の被害者がかわいそうでならない。
0255nobodyさん
2006/08/03(木) 00:42:08ID:???/ /⌒)ノ ペタン
∧_∧ \ (( ∧_∧
(; ´Д`))' ))(・∀・ ;) おおおままいららももちちつけけけけ
/ ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O ノ ) ̄ ̄ ̄()__ )
)_)_) (;;;;;;;;;;;;;;;;;;;)(_(
0256nobodyさん
2006/08/03(木) 01:33:01ID:???0257nobodyさん
2006/08/03(木) 01:35:17ID:???0258nobodyさん
2006/08/03(木) 02:37:23ID:???物干し竿売ってるのは移動ついでってのを知ってるんだろうか。
訪問販売で100個売れる?すごいね。
でも訪問販売してる間にサイトで注文が5個来てたら、
わざわざ訪問しないでも5個余分に売れるのにねぇ。
維持費と宣伝効果がそれを下回るなら必要ないって判断になるだけだし。
025998
2006/08/03(木) 02:52:12ID:hD9wA+saまだまだ普通に「商売」って観点で見りゃネットはリアルにかなわないでしょ?
コンビニでも売ってるようなモノをネットで扱ったって誰も買う訳ない。
リアルに向く商材、ネットに向く商材ってのもあるだろうし、
ネットならではの利益の上げ方ってのもあると思う。
まぁ、でも具体的な例だと新宿の某レコードショップは店舗の売り上げよりも通販の方が、
売り上げ出してるらいしいし。
(てか店舗はショボ過ぎ)
何故かっていうとマニア向けの品揃えだよね。
特殊なケースだろうな。
どっちか言うとテレビみたいなもんで無料サービスが基本で広告収入とか、
そういうやり方の方が向いてるんじゃないかな?
いやいや一般的な商売で言ったら、そりゃリアル店舗&営業に適う訳ないのは当然と思う。
なんつぅか。
0260nobodyさん
2006/08/03(木) 02:52:44ID:hD9wA+sa0261nobodyさん
2006/08/03(木) 03:25:31ID:???ウェブサイトなんてまともに利用しようと思わないだろ。
0262nobodyさん
2006/08/03(木) 04:00:50ID:???0263nobodyさん
2006/08/03(木) 05:17:38ID:???0264nobodyさん
2006/08/03(木) 06:09:00ID:QGlUDLBTなるほど。マーケティングか。やっぱり凄いよ!お前ら。
で、Aという健康食品を売るのに具体的にお前ならどういうマーケティングを
どうやって取りどう生かすんだ?
アンケートでも書かせるのか?確かにプレゼント企画でもやれば1万レベルの人間が
集まるな。しかしなプレゼント企画に参加してくる貧しいやつらの意見をお前はどう使うんだ?
アクセス解析からマーケティングか?そうだなそれは日々行われるな。
うん。そうだな。どうも具体的に考えれば考えるほどイマイチだな。
これは俺がイマイチなんだろうな。マーケティングで成功してる
>>257ならマーケティングからネットのいい使い方を見つけ出すんだろうな。
流れに逆らわずってやつか。よし。待ってるぞ>>257あきらめんなよ。
俺にお前の想いをぶつけてみろ。
>>258
いい例えだよorz
本当凄いよお前ら。
でもお前らの発言全て「ネットはしょぼい。しょぼいなりに利点がある。しょっぼいなりの使い方をしよう」
ってあきらめ。俺は「ネットはしょぼくないはずだ!あきめるかボケ!」って粘着。
>>261
いいところをつくよね。
「信頼を得るのもネットには向かない」
ってことを言いたいんだよな。
セールスならやりようでいくらでも信頼を取れるからな。
0265nobodyさん
2006/08/03(木) 06:46:07ID:???そう思ってるのは >>264 だけじゃないかw
「ネットの世界」 っていうくらい世界というか次元が違うだけ。いっしょくたにされても困る。
どっちも得手不得手があるのだから、その上でそれを生かしたことをするってもんだろ。
よく訪問販売を例に出すけどさ、わざわざ北海道や九州の人の家まで行ってできるかと。
耳かきで耳はほじれてもカレーは食えないってことじゃねーの。
0266nobodyさん
2006/08/03(木) 06:50:24ID:???0267nobodyさん
2006/08/03(木) 06:51:26ID:???0268nobodyさん
2006/08/03(木) 08:00:26ID:???0269nobodyさん
2006/08/03(木) 08:01:15ID:???0270nobodyさん
2006/08/03(木) 08:03:05ID:???>非常識な人間に、営業うんぬんを語る資格もない。
>あなたの「訪問販売」の名を借りた「押し売り」の被害者がかわいそうでならない。
0272nobodyさん
2006/08/03(木) 09:50:01ID:???0273nobodyさん
2006/08/03(木) 10:58:06ID:???脳なし個人商店が愚痴をこぼすスレはくこでしか?
とりあえず質問
値として0をもつフォームからGETを受けて、perl で値を調べると
値が入ってこないんだけど、これって正常動作なんでしょか?
入力データはハッシュにいれてて、definedで調べると未定義って帰って来ます。
perlは昨日落としてきたのを使用。
0274nobodyさん
2006/08/03(木) 11:19:39ID:???0275nobodyさん
2006/08/03(木) 11:38:19ID:???なんだかんだ全員レスつけたろ
0277nobodyさん
2006/08/03(木) 13:03:04ID:???さっきのクソ自己中といい一体なんだってんだ。
0278nobodyさん
2006/08/03(木) 14:28:31ID:VJorhNroここにあるFTP転送スクリプトを一定時間サーバーの応答がなければ
実行を止めるというタイムアウト処理をするように書き換えようと思います。
alarm関数でなくselectでタイムアウト処理をしようと思いますが
以下のようにftp_recvを書き換えてみましたがタイムアウト処理が
行われません。どうしたら良いかご教授願います。
sub ftp_recv {
my ($sock) = @_;
my ($buf, $rc, $cont, $msg);
my $rin = '';
my $rout;
my $ftp_timeout = 10.0;
$rc = 0;
vec($rin, fileno $sock, 1) = 1;
die unless select $rout=$rin, undef, undef, $ftp_timeout;
while (chomp($buf=<$sock>)) {
die unless select $rout=$rin, undef, undef, $ftp_timeout;
print "$buf\n";
$buf =~ /^(\d\d\d)([ |-])(.*)/;
$rc = $1; $cont = $2; $msg = $3;
if ($cont ne '-') { last; }
}
return($buf);
}
0279nobodyさん
2006/08/03(木) 14:42:18ID:???エスパーになれとはいわないからせめて文字列を真偽値として使うときの
perl の振る舞いぐらいわかってから回答してください。 (>_<)
0281nobodyさん
2006/08/03(木) 15:08:09ID:???<img src="hoge.cgi">でperlからgifを返してます。
以前のページがどこだったのかを知るにはどうすればいいでしょうか?
リファラには呼び出し元がはいるので2行目を記述してる自分のページがはいります。
index.cgiなど全部のページがcgiでないとアクセス者がどこから来たのかわかりませんかn?
0282nobodyさん
2006/08/03(木) 18:17:23ID:???2.全部のページにアクセス解析を設置して、
その情報をもとに自分で集計する。
3.Javascript 等を利用して
<img src="hoge.cgi?(<img>が記述されているページから見たリファラ)"
の形で呼び出す。
2世代前のリファラを送信する規格も実際送信するブラウザも存在しないので
このような方法以外では無理。
0283nobodyさん
2006/08/03(木) 18:22:35ID:???0284nobodyさん
2006/08/03(木) 19:17:34ID:Uu9V7GTdCGI_Liteを用いて作成したアップローダーで、実際にアップロードする前に
1回確認画面(「このファイルでOK?」という感じのもの)を入れたいと考えています。
2.それでこんな風にやってみたが・・・
<INPUT TYPE="file" NAME="up_data">の内容を
$data = $FORM{'up_data'};として、確認画面で
<INPUT TYPE="hidden" NAME="up_data" VALUE="$data">
と入れて保持しておこうとしてみました。
3.こんなエラーが出て上手く行かなかった。
エラーというかhiddenのVALUEが空っぽになってしまいました。
そもそも自分がやろうとしていることが可能かどうかも分からない状況です。
具体的な手順を教えていただければこれ以上のことはありませんが、
可能か不可能かという回答だけでも構いませんので、よろしくお願いします。
0285nobodyさん
2006/08/03(木) 19:21:13ID:???0286nobodyさん
2006/08/03(木) 19:24:01ID:???0287284
2006/08/03(木) 19:26:19ID:Uu9V7GTdあぁ!なるほど!
とりあえずは確認画面に行くと同時にアップしておいて
確認画面でキャンセルしたらテンポラリファイル削除
確認画面でそのままOKしたらテンポラリファイルリネーム
って感じですかね。
ありがとうございます!
目からウロコでした。
0289284
2006/08/03(木) 19:37:26ID:Uu9V7GTd完全に見落としてました。
危うくゴミだらけになるとこでした。
その解決方法は・・・
テンポラリファイルの名前にアップした日時を入れておいて
次回CGIにアクセスがあった場合にそのときの日時と比較して
ある程度の差があるファイルは全て削除
というようなものを想像してみましたが、変ですかね・・・?
0290nobodyさん
2006/08/03(木) 19:47:22ID:???0291284
2006/08/03(木) 19:52:27ID:Uu9V7GTdやろうとしていることが間違ってないという後押しは心強いです。
ありがとうございました!
0292nobodyさん
2006/08/03(木) 20:35:00ID:???ロングテールでググれ。話はそれからだ
0293nobodyさん
2006/08/03(木) 22:03:34ID:???輪足の場合はjsが現実的そうですね。
ちょっとあきらめかけてましたが、盲点でした。
jsをバカにしすぎてまいた。
すれではおれいあしな。
0294nobodyさん
2006/08/03(木) 22:15:14ID:???0295nobodyさん
2006/08/03(木) 22:36:00ID:???まぁアクセス解析img挿入もかわらんか。
apacheログとるのが一番楽。
0296nobodyさん
2006/08/03(木) 22:53:08ID:???って、apacheのログを取るモジュールをPerlで作ればスレ違いじゃない!
0297nobodyさん
2006/08/03(木) 23:44:20ID:???自分自身からの呼び出しのみを許可して外部からの呼び出しは禁止させたいんですが
HTTP_REFERERだと容易に偽れてしまいますよね?
0298nobodyさん
2006/08/03(木) 23:52:51ID:???hoge.cgiを呼び出す側のhtmlもcgiにして、
<img src="hoge.cgi?$ENV{HTTP_REFERER}">
でもできそう。
というか全部のページをCGI にするのって、perlならそれほどめんどくさくない。
0301nobodyさん
2006/08/04(金) 11:38:58ID:???>でもできそう。
ほのぼのマンか?
0303nobodyさん
2006/08/04(金) 15:54:14ID:???0304nobodyさん
2006/08/04(金) 16:50:18ID:???0306298
2006/08/04(金) 22:20:26ID:???0312nobodyさん
2006/08/05(土) 13:12:05ID:???0313nobodyさん
2006/08/05(土) 13:18:43ID:???辞書を引いて見るといい。
0314nobodyさん
2006/08/05(土) 17:42:22ID:IQdTNDFf(1)商取引で契約当事者から出される損害賠償の請求を伴った苦情。
(2)(一般に)苦情。注文。「―をつける」
三省堂提供「デイリー 新語辞典」より
0315nobodyさん
2006/08/05(土) 17:56:39ID:???どうみてもこういう場合には不適切じゃね?
http://www2.alc.co.jp/ejr/index.php?word_in=claim&word_in3=PVawEWi72JXCKoa0Je
0316nobodyさん
2006/08/05(土) 18:02:07ID:???0317nobodyさん
2006/08/05(土) 18:08:19ID:???0318nobodyさん
2006/08/06(日) 12:14:13ID:NewLER86どのように使い分けたらいいのか分かりません。
(同じとしか思えない)
どういうときにmyを使うべきか、
どういうときにlocalを使うべきか、 おしえていただけますでしょうか?
よろしくお願い申し上げます。
0319nobodyさん
2006/08/06(日) 12:26:48ID:???0320nobodyさん
2006/08/06(日) 13:22:44ID:???local はパッケージグローバル変数の値を一時的に差し換えて利用するための関数で、ダイナミックスコープと呼ばれる効果範囲を持っています。
my はシンボルテーブルに属さない局所的な変数を宣言するための関数で、レキシカルスコープと呼ばれる範囲で利用可能な変数を新たに生成します。
>>318 の求める物はほとんどの場合 my の働きだと思います (ぼくがなぜそう思うか理解できないなら、まず間違いなくそうです)。
ですから、そうしない理由を明示できない場合は常に my (及び use strict) を使ってください。
0321318
2006/08/06(日) 13:52:08ID:???親切にごせつめいいただいてありがとうございます。
おっしゃるとおりに、my (及び use strict) を使って行こうと思います。
0322nobodyさん
2006/08/06(日) 14:37:05ID:???ただ、perlソースの文字コードはEUCの為、XMLファイルのUTF-8の文字
コードに変換する必要があると思います。
そこで質問なのですが、EUC→UTF-8への文字コード変換について
一番スマートな方法は何でしょうか?
0324nobodyさん
2006/08/06(日) 15:21:19ID:???0325323
2006/08/06(日) 15:21:52ID:???0326nobodyさん
2006/08/06(日) 16:40:59ID:???>perlソースの文字コードはEUCの為
これに固執する理由による。
文面から見るに 「perlはEUCで書かなければならない」 と勘違いしてないか?
普通に UTF-8 でスクリプト書いても通るよ。
0327nobodyさん
2006/08/06(日) 18:22:10ID:???0329322
2006/08/06(日) 22:57:22ID:???有難うございます。おっしゃった方法で解決できました。
UTF-8でスクリプトを書く方法でも出来ました。
皆様有難う御座います。
0330nobodyさん
2006/08/07(月) 12:05:18ID:???bとcが2つ以上あったときに真を返すようにするにはどのようにすればいいのでしょうか?
「abacacaabaa」だったら真を返す、のような感じです。
0331nobodyさん
2006/08/07(月) 12:12:57ID:???0332nobodyさん
2006/08/07(月) 12:15:55ID:???言い方があいまいでよくわからない
bとcの個数をそれぞれN(b),N(c)としよう。
N(b) >= 2 && N(c) >= 2
N(b) >= 2 || N(c) >= 2
N(b)+N(c) >= 2
どれともとれるが。
0333nobodyさん
2006/08/07(月) 12:18:33ID:???申し訳ないです、もう少し粘ってみます
>>332
N(b) >= 2 && N(c) >= 2
これです。わかりにくくてすみません
0334333
2006/08/07(月) 12:27:32ID:???>>330のように11文字だったら
if($x =~ /b.{0,10}?g/i and $x =~ /d.{0,10}?d/i) {
何らかの処理
}
でいけました
0335nobodyさん
2006/08/07(月) 12:28:37ID:???それぞれの文字の間に.*はさんで|でならべればできあがり。
わざわざ正規表現使わずに数えたほうが楽かもね。
0336nobodyさん
2006/08/07(月) 12:52:26ID:???perldebugでインタラクティブなperlを使用するために
$ perl -d -e 42
とありますが、なぜ42なのでしょうか?
0337nobodyさん
2006/08/07(月) 13:57:17ID:???0341nobodyさん
2006/08/07(月) 21:15:48ID:???フォームにINPUT type=imageを使用した時にnameとvalueが無効になってしまっているようなんです。
これは元々そういう仕様なんでしょうか?
それとも何かが間違っているのでしょうか?
0342nobodyさん
2006/08/07(月) 21:21:23ID:???HTMLの質問はWeb制作板へ。
0343nobodyさん
2006/08/07(月) 21:52:54ID:DmsXLNkonameに同じ名前を指定する時、
Input typeがcheckboxならばcgi-lib.plで処理出来るのですが
hiddenの時も同じように処理は出来ないのでしょうか?
&ReadParseの力を使っても何も表示されませんでした。
0346nobodyさん
2006/08/07(月) 22:42:46ID:???0347nobodyさん
2006/08/07(月) 22:56:05ID:???cgi-lib.pl使ってないけど
普通にできると思う。
けどnameをおんなじ名前指定するのは、非推奨のはずなので
perlというより、サーバー側でちゃんと処理されない可能性は考えられる。
詳しい人あとよろしく
0348nobodyさん
2006/08/07(月) 23:34:23ID:???で取り出せるよ?
0349343
2006/08/08(火) 02:46:18ID:???無事出来ました。ありがとうございました。
・・・・もう少し自力で出来るように頑張ります。すみません。
0350nobodyさん
2006/08/08(火) 05:27:55ID:???0351nobodyさん
2006/08/08(火) 07:10:51ID:???0352nobodyさん
2006/08/08(火) 08:21:39ID:???0353nobodyさん
2006/08/08(火) 10:21:01ID:???0354nobodyさん
2006/08/08(火) 12:23:07ID:???えらい見づらくなる
0355nobodyさん
2006/08/08(火) 12:28:11ID:???0356nobodyさん
2006/08/08(火) 12:33:02ID:???テキストファイルを読み込む時に半角スペースで区切って文字を認識させてるっぽいんですが
改行して認識させるにはどうしたらいいっスかね?
0358nobodyさん
2006/08/08(火) 12:38:35ID:???いやファイルを読み込んでforeach ( split(/\s+/, $test) ) {って感じでなってるんだけどこれだと半角スペースで
区切って複数を認識させるんだけどそれを改行して複数認識させたいっていうか・・・。
0359nobodyさん
2006/08/08(火) 12:46:39ID:???/\s+/
↓
/[\r\n]+/
とかでいいんでね?
まあ、今回は何もいうまい。
0360nobodyさん
2006/08/08(火) 13:14:12ID:???として、画面を戻すのを弾こうとおもうのですが、ifの条件の式が分かりません
解説しているサイトがあれば教えてください。お願いします
0361nobodyさん
2006/08/08(火) 13:21:46ID:???0362nobodyさん
2006/08/08(火) 13:25:42ID:???そのままだとユーザビリティに反するので答えてくれないかもしれないが
0364nobodyさん
2006/08/08(火) 23:25:32ID:???ラジオボタンの制御がうまくいきません。
どういうことかというと、
フォームに必要項目を入力してもらい、確認ボタンを押した後、
入力項目にエラーがあると修正ボタンが表示され、
修正をしてもらうという仕組みなのですが、
修正ボタンを押して入力フォームに戻ると、ラジオボタンが選択していた
状態ではなくなり、デフォルトの状態にもどってしまいます。
修正ボタンを押した後に、ラジオボタンの位置を、選択した箇所のまま表示させるには
どのような処理を行えばいいのでしょうか?
どなたかご教授お願い致します。
修正画面までラジオボタンのデータが渡っていることまでは確認済みです。
0365nobodyさん
2006/08/08(火) 23:33:10ID:???0366nobodyさん
2006/08/08(火) 23:50:03ID:???早速アドバイスありがとうございます。
HTMLのソースが下のような感じです。
input name="genre" type="radio" value="1-1">
input name="genre" type="radio" value="1-2">
input name="genre" type="radio" value="1-3">
この行一行一行を「m//」でvalueが一致するか調べて
一致したら、「s///」で行ごと置換すればいいのでしょうか?
0367nobodyさん
2006/08/09(水) 00:02:59ID:???これとかだな。
http://search.cpan.org/~nwclark/perl-5.8.8/lib/Term/ReadLine.pm
0368nobodyさん
2006/08/09(水) 00:16:15ID:???0369nobodyさん
2006/08/09(水) 02:28:37ID:2nlyYTa7データの書き込み処理に躓きました・・・。ヒントを下さい・・・。
$hogeに、「5」という数字が入っているとします。
そしたら、下記の「log.dat」の「番号5」の値の投票結果を「+1」していきたいのです。
つまり、「$hogeに入った数字と、log.datの『番号』の値を比べて、同じなら『投票結果』の値を『+1』する」
というスクリプトを組みたいのですが・・・・。
ログファイル(log.dat)の中身は以下の通りです。
番号 投票結果
-----------------------
1 10
2 20
3 26
4 30
5 10
-----------------------
どうか、よろしくお願いします。
0370nobodyさん
2006/08/09(水) 03:32:28ID:???0371369
2006/08/09(水) 03:40:54ID:eB/zZqiVありがとうございます。かなり複雑っすね・・・。
たびたび申し訳ありませんが、自分には何のこっちゃか・・・ orz
0372nobodyさん
2006/08/09(水) 04:05:06ID:???人間が見やすいようにするんじゃなくて
perl様が見やすいようにする
つか、他人の作った投票スクリプトを読み下せ
0373nobodyさん
2006/08/09(水) 04:32:22ID:WfKDVGHV[0-9]{1,3}では999までヒットしてしまいます。
ループもさせたくないのですが、、
0374nobodyさん
2006/08/09(水) 05:06:26ID:???0375nobodyさん
2006/08/09(水) 06:10:08ID:???そう書くのは割りと普通じゃないの?
簡単なログファイルでいいのならたぶん俺もそう書く。
open (略); read(略); %data = split(/\s+/);
だけでもデータとれるし。
>>369
+1 して保存するときは普通に。
$data{5}++;
foreach (sort { $a <=> $b } keys %data) { print 略 $_, "\t", $data{$_}, "\n"; }
close (略);
>>370 は結構トリッキーな書き方だね。 (.*)$ の部分はどうして必要なのかちょっとわからなかったけど。
0376nobodyさん
2006/08/09(水) 07:14:26ID:???>>372が言っているように、ログファイルの書式を見直すべし。
1, 2, 最終行 は不要。もし入れたいならコメントと分かるように工夫を。
余分なスペースも不要。
ログファイル例:
1 10
2 20
3 26
4 30
5 10
> 「番号5」の値の投票結果を「+1」していきたい
いったん全部読みこんで、5の値だけ変えて、全部書き出す。
0377nobodyさん
2006/08/09(水) 07:22:05ID:???0378nobodyさん
2006/08/09(水) 10:40:29ID:???ログファイル例:
10
20
26
30
10
で、十分。あとは、
open fh,$log;
@dat=<fh>;
close fh;
chomp @dat;
$dat[$hoge - 1]++;
open fh,">$log";
print fh join "\n",@dat;
close fh;
で、どうぞ
0379369
2006/08/09(水) 12:22:14ID:???0381378
2006/08/09(水) 13:27:12ID:???えっと、自分は試して書いてますが・・・
最初chompとjoinは書いてませんでしたが、それだとうまく行かなかったので足しました・・・
なので、その辺がちょっと冗長かも・・・
0382nobodyさん
2006/08/09(水) 13:29:07ID:???0383nobodyさん
2006/08/09(水) 13:31:01ID:???0384nobodyさん
2006/08/09(水) 14:05:56ID:???0385nobodyさん
2006/08/09(水) 16:08:49ID:???-------------------------
10
20
26
30
10
-------------------------
のようなログがあった場合、この数字を全て足していきたいのですが、
-------------------------
open(LOG," $log");
@logs=<LOG>;
close(LOG);
for ($i = 0; $i <= $#logs; $i++) {
$count += $logs[$i];
}
-------------------------
で、大丈夫でしょうか?
ひょっとすると、forよりforeachやwhileを使ったしたほうがよろしいのでしょうか?
アドバイスよろしくお願いします orz
0386nobodyさん
2006/08/09(水) 16:28:35ID:???0387385
2006/08/09(水) 16:33:48ID:???ただ単に、ログの合計値を求めたいだけなので、「$i」は使わないっすね・・・。
そうすると、foreachでしょうか?やり方は分からんですが・・・。
0388nobodyさん
2006/08/09(水) 16:49:10ID:???0389nobodyさん
2006/08/09(水) 17:32:59ID:???関数すら調べようとしないなんてなぁ。
素直に「夏休みの宿題です」と言えば、まだかわいげがあるのに。
0390nobodyさん
2006/08/09(水) 17:34:59ID:???0391nobodyさん
2006/08/09(水) 17:40:58ID:???0392nobodyさん
2006/08/09(水) 17:57:13ID:WfKDVGHVありがとうございます
0393nobodyさん
2006/08/09(水) 18:01:38ID:WfKDVGHV行が多いならメモリ節約のために1行づつ読んだほうがいいですよ。
排他したいならflockをした上で、いったんテンポラリファイルで保存してリネームがいいです。
0394nobodyさん
2006/08/09(水) 18:13:32ID:???foreach(@logs){
$count += $_;
}
while(<LOG>){
$count += $_;
}
下のほうが推奨されるやり方。
どちらにせよ10 + "15\n" == 25 という危ない等式を使っているので、
ほかの言語でやるときは注意が必要
0395nobodyさん
2006/08/09(水) 19:56:07ID:???そうか?
俺も結構ゴリゴリ書くから、こうゆう細かい事は極力気にかけてるぉ
>>394
ん?「10 + "15\n" == 25」って何がマズイんだ?
0396nobodyさん
2006/08/09(水) 20:06:22ID:???0399nobodyさん
2006/08/09(水) 21:27:42ID:lhGjc7IL銘柄コードを1000から9999までループさせ銘柄名を取得するのですが、
ループの回数が少ない場合正常終了するのですが全件やると半分ぐらいまで書き込みが完了した所で
Premature end of script headers
のエラーになってしまいます。
ファイルへの書き込みがタイムアウト?しているのかと思い1000件毎に、CLOSEしてOPENしなおしても変化ありません。
何回かに分けて処理したほうが良いのでしょうか?
次でソースのせます。
0400nobodyさん
2006/08/09(水) 21:33:52ID:lhGjc7ILclose(FILE);
open(FILE, ">>$name_data");#追加書き込みでファイルオープン
eval{ flock(FILE, 2) };
for($i = $start_code ; $i < $end_code ; ) {
$cd = sprintf("%04d",$i);
$url="ヤフーのURL";
$dt=get($url);
@data = split(/\n/,$dt);
$j = 0;
while($j < @data) {
if(銘柄名の行になったら){
$sk = $data[$j];
$sk =~ s/\<b\>//g;#ごみ取り
$sk =~ s/\<\/b\>.+//g;#ごみ取り
$sk = jcode::sjis($sk);
$sk =~ s/\(株\)//g;#ごみ取り
print FILE jcode::sjis("$cd\,$sk\n");#書き込み
$j = 100000#終わりなので抜ける
}
++$j;
}
++$i;
if(substr($cd,1,3) eq "000"){
close(FILE);
open(FILE, ">>$name_data");#タイムアウト防止で1000毎に書き込み
eval{ flock(FILE, 2) };
}
}
close(FILE);
こんなです。よろしくおねがいします
0401nobodyさん
2006/08/09(水) 21:43:24ID:???0402nobodyさん
2006/08/09(水) 21:43:42ID:???0403nobodyさん
2006/08/09(水) 21:52:32ID:???ApacheならTimeout値の見直しとか。
共有サーバなら逝ってよし。
0405nobodyさん
2006/08/09(水) 23:20:10ID:???株価データの著作権とかの問題を言ってる?
0406nobodyさん
2006/08/09(水) 23:38:58ID:???$dt=get($url);
ってヤフーのデータを読みに行ってるんだよね。
これがforループの中にある事に不吉な気配を感じる。
$iの値は1000から9999まで1ずつ増えるんだよね?
0408400
2006/08/10(木) 00:30:08ID:???タイムアウト値を300から2000に変更したところ全て正常終了できました。
ありがとうございます。
>>401、>>404
プログラミングのお作法についてなのか
著作権の問題かどちらかでしょうか?
ネット上に公開されているデータを収集しファイルに落とすことが問題?
会員用のデータを公開したり勝手に売ったりしたら問題だとは思いますが・・
0409nobodyさん
2006/08/10(木) 00:58:21ID:???>402-403のことで解決したってた。
解決策も提案できないチンカスは早く寝ろや
>404
サーバーに負担かけすぎなので、出来れば一定間隔でsleep入れて相手のサーバーを思いやるか、
特定銘柄のみの取得にするといいかも。
0410nobodyさん
2006/08/10(木) 00:58:52ID:???2個目は400さんへだ。
0411nobodyさん
2006/08/10(木) 02:31:33ID:???>著作権の問題かどちらかでしょうか?
どちらでもありません。ただ死んでください。
0412nobodyさん
2006/08/10(木) 02:57:32ID:???このへんの板も ID つかねぇかなー
0413nobodyさん
2006/08/10(木) 07:28:55ID:???下手すると威力業務妨害とかで訴えられるんじゃね?
0414nobodyさん
2006/08/10(木) 07:45:54ID:???0415nobodyさん
2006/08/10(木) 08:40:23ID:???0416nobodyさん
2006/08/10(木) 08:55:45ID:???いいかげんめんどうじゃないですか?
最近はPerl限定ならStorableにハッシュ突っ込んで終わりにしてます。
0417nobodyさん
2006/08/10(木) 09:20:20ID:???むしろPerl依存の形式にしちゃうほうが後々めんどくさそう・・・
0418nobodyさん
2006/08/10(木) 10:27:13ID:???{
test_a => q{
my $a = 0;
for (my $i = 0; $i < 100000; $i++) {
$a++;
}
},
test_b => q{
my $a = 0;
foreach (1 .. 100000) {
$a++;
}
}
}
);
Benchmark: timing 500 iterations of test_a, test_b...
test_a: 12 wallclock secs (11.63 usr + 0.00 sys = 11.63 CPU) @ 43.01/s (n=500)
test_b: 9 wallclock secs ( 9.63 usr + 0.00 sys = 9.63 CPU) @ 51.95/s (n=500)
0419nobodyさん
2006/08/10(木) 10:44:47ID:???use Benchmark;
my @arr = (1 .. 100000);
timethese(1000, {
test_a => sub {
my $n = 0;
for (my $i = 0; $i < @arr; $i++) { $n++; }
},
test_b => sub {
my $n = 0;
foreach (@arr) { $n++; }
},
test_c => sub {
my $n = 0;
for (@arr) { $n++; }
},
});
Benchmark: timing 1000 iterations of test_a, test_b, test_c...
test_a: 26 wallclock secs (25.80 usr + 0.00 sys = 25.80 CPU) @ 38.77/s (n=1000)
test_b: 15 wallclock secs (14.64 usr + 0.00 sys = 14.64 CPU) @ 68.31/s (n=1000)
test_c: 15 wallclock secs (14.53 usr + 0.00 sys = 14.53 CPU) @ 68.82/s (n=1000)
0420nobodyさん
2006/08/10(木) 10:51:06ID:???0421nobodyさん
2006/08/10(木) 11:00:41ID:???普通の for ループ(test_a)と、リストを渡す for ループ(test_c)では、明らかに 1.5 倍程度前者の方が遅い。
でも、foreach (test_b) と for (test_c) の違いは、「無い」と言っていい。
(上のを何度か実行してみたところ、全ての結果において test_c の方が 0.1 秒ほど速かったけど誤差の範囲)
0423nobodyさん
2006/08/10(木) 11:47:25ID:???そうじゃなくて、@aryを100とか1000くらいに、timetheseの方を100000とかにした方が現実的だと思っただけです。あんまり気にしないでください。
0424nobodyさん
2006/08/10(木) 11:48:22ID:???my @arr = (1 .. 10000);
timethese(1000, {
test_a => sub {
my $x = @arr;
for (my $i = 0; $i < $x ; $i++) { }
},
test_b => sub {
foreach (@arr) { }
},
test_c => sub {
my $n = 0;
for (@arr) { $n++; }
}
});
Benchmark: timing 1000 iterations of test_a, test_b, test_c...
test_a: 2 wallclock secs ( 1.88 usr + 0.00 sys = 1.88 CPU) @ 533.33/s (n=1000)
test_b: 1 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ 810.37/s (n=1000)
test_c: 2 wallclock secs ( 1.86 usr + 0.00 sys = 1.86 CPU) @ 537.63/s (n=1000)
aで$n++する意味がわからん。
0426nobodyさん
2006/08/10(木) 12:01:22ID:???0427nobodyさん
2006/08/10(木) 12:27:47ID:???use Benchmark;
my @arr = (1 .. 1000);
timethese(10000, {
test_a => sub {
my $x = @arr;
for (my $i = 0; $i < $x ; $i++) { $arr[$i]=" "; }
},
test_b => sub {
foreach (@arr) { $_=" "; }
},
test_c => sub {
my $n = 0;
foreach (@arr) { $arr[$n++]=" "; }
},
test_d => sub {
my $n = 0;
foreach (@arr) { $arr[$n]=" ";$n++; }
}
});
__END__
Benchmark: timing 10000 iterations of test_a, test_b, test_c, test_d...
test_a: 4 wallclock secs ( 3.72 usr + 0.01 sys = 3.73 CPU) @ 2678.81/s (n=10000)
test_b: 2 wallclock secs ( 2.73 usr + 0.00 sys = 2.73 CPU) @ 3657.64/s (n=10000)
test_c: 4 wallclock secs ( 4.34 usr + 0.00 sys = 4.34 CPU) @ 2302.03/s (n=10000)
test_d: 4 wallclock secs ( 3.98 usr + 0.00 sys = 3.98 CPU) @ 2509.41/s (n=10000)
0428nobodyさん
2006/08/10(木) 13:47:00ID:???0429nobodyさん
2006/08/10(木) 16:36:09ID:???純粋に繰り返し部分だけを比較するなら @arr は余計。( $i は、それがないと
同等の機能を果たせないので必要)
for ( my $i=0; $i<10000; $i++) {}
for ( 0..10000-1 ) {}
0430nobodyさん
2006/08/10(木) 16:48:35ID:???timethese( 1000, {
a => sub { for ( my $i=0; $i<10000; $i++ ) {} },
b => sub { for ( 0..10000-1 ) {} }
});
---
a: 1 wallclock secs ( 1.49 usr + 0.00 sys = 1.49 CPU) @ 673.40/s (n=1000)
b: 1 wallclock secs ( 1.05 usr + 0.00 sys = 1.05 CPU) @ 955.11/s (n=1000)
前者は $i を使う分(?)少し遅くなってるが、実際の使用では
繰り返し処理のメイン処理部が時間を食うわけだから、どちらも同じ程度と
認識してよいでしょう。
0431nobodyさん
2006/08/10(木) 17:03:16ID:???for (@arr) {}
と
foreach (@arr) {}
を比べるんじゃないの?
内部では同じだから、ほとんど誤差分しか違いが出ないと思うけど。
条件付きの for (my $i = 0; $i < 1000; $i++) {} が
条件なしの foreach (0 .. 1000) より遅いのは仕方ないし。
0432nobodyさん
2006/08/10(木) 17:21:05ID:???0433nobodyさん
2006/08/10(木) 20:18:12ID:???0434
2006/08/10(木) 20:38:11ID:/HJpKD0Hforeach (@omomomo){
my $ha = $hoge[0];
my $hb = $hoge[1];
push(@a,$ha);
push(@a,$hb);
}
while(@ha && @hb){
my %has;
$has{hoge} = shift @ha;
$has{moge} = shift @hb;
push(@hogehoge,\%has);
}
$template->{hogehoge} = \@hogehoge;
これもっと短くする方法ないですかね
0435nobodyさん
2006/08/10(木) 20:48:18ID:???URLを指定してそれをダウンロードさせたいのですが、どのようなモジュールがありますでしょうか?
0436nobodyさん
2006/08/10(木) 20:48:39ID:???0437nobodyさん
2006/08/10(木) 20:48:41ID:???とか今は平気なんね。
知らなかったから参考になった。
>>434
templateしらんがforeachは何してるん。
0438nobodyさん
2006/08/10(木) 20:51:07ID:???file:///C:/Perl/html/site/lib/LWP/UserAgent.html
たぶんここに答えのファイルがあるはずだッ
0440nobodyさん
2006/08/10(木) 21:14:31ID:???スクリプト側でファイルのパーミッションを指定したり変更するにはどのような
方法がありますか?
0441nobodyさん
2006/08/10(木) 21:15:41ID:???0442nobodyさん
2006/08/10(木) 22:29:23ID:???#!/usr/bin/env perl
use LWP::Simple;
print "content-type:text/html\n\n";
getprint("http://www.yahoo.co.jp/");
0443434
2006/08/10(木) 22:30:27ID:???foreach(1..$num){ の間違いです(適当にかいてしまいました すみません
$numにはmysqlから取得した個数が入っていて
foreach(1..$num){
@hoge = $sql->fetchrow_array; # @hogeにはhogeとmogeを配列で値を取得
my $ha = $hoge[0];
my $hb = $hoge[1];
こんなかんじです
0444440
2006/08/10(木) 23:07:09ID:???各種ログファイル名 という項目でファイル名を指定するわけですが
その際にスクリプトの方でパーミッションを指定するにはどのように
記載すればよいですか?
0445435
2006/08/10(木) 23:13:13ID:???ありがとうございます。
Windows環境でないのですが、UserAgent.htmlを探してみたのですが
自分の環境にはないようです。
>>442
ありがとうございます
実際にやってみると、標準出力にソースが出力されてしまいます。
後付けで申し訳ないのですが、それをHTML::TagParserで処理したいのですが
そのような事が出来る方法などないでしょうか?
0447nobodyさん
2006/08/10(木) 23:27:11ID:???>>434
とりあえず短くした
while (my $row = $sql->fetchrow_arrayref) {
push @hogehoge, {hoge => $row->[0], moge => $row->[1]};
}
0448nobodyさん
2006/08/10(木) 23:28:38ID:???そのモジュール知らんけど、
>>$html = HTML::TagParser->new( "http://www.kawa.net/xp/index-j.html" );
ていうコードが引っかかって来たけど・・・?
0449nobodyさん
2006/08/10(木) 23:52:40ID:???出力結果を変数に入れてHTML::TagParserに渡すとか。
その方法すら想像付かないならプログラミング自体諦めたほうがよい。
0450444
2006/08/10(木) 23:54:01ID:???各種ログファイル名を指定する所で
$NAME_1 = 'logdata';
の用にした時のスクリプト側でパーミッションを指定する際には
どうしたらよいでしょうか?
簡単にperldoc -f chmod のままではうまくいきません。
0451nobodyさん
2006/08/11(金) 00:00:33ID:???chmod使ってどんな風に書いたの?
それでどううまく行かなかったの?
0453nobodyさん
2006/08/11(金) 00:06:50ID:???なんかソースにperldoc -f とか書いてそう・・・w
0454nobodyさん
2006/08/11(金) 00:09:08ID:???>>446 にも補ってもらってて、まだダメとは…。
コピペできるくらいに全部コード書いてあげないと分からないのでは。
0455444
2006/08/11(金) 00:19:47ID:???0456nobodyさん
2006/08/11(金) 00:34:46ID:???じゃあほれ
http://www.rfs.jp/sb/perl/05/chmod.html
455
0457nobodyさん
2006/08/11(金) 00:45:57ID:???だから perldoc は、その「書き方」を調べる為のコマンドだってば・・・。英語だけど中学レベルの簡単な英語。
Windows なら、スタート→プログラム→アクセサリ→コマンドプロンプトを開いて perldoc -f chmod と打ってEnter。
自分で調べられない奴は、いつまで経っても上達しない。どうせ perldoc で検索すらしてないんだろ。
0458nobodyさん
2006/08/11(金) 00:48:56ID:???0459nobodyさん
2006/08/11(金) 01:19:58ID:???0460nobodyさん
2006/08/11(金) 01:35:21ID:5JciSP0Nそのアンカの張り方いいなw
0461nobodyさん
2006/08/11(金) 01:43:15ID:???じゃあほれ
(p)http://www.rfs.jp/sb/perl/05/chmod.html
455
やるならちゃんと書いて欲しかったwww
0462nobodyさん
2006/08/11(金) 15:50:22ID:???モジュールをコンパイルしてインストールしたら
/usr/pkg/lib/perl5/site_perl/5.8.0/HTML/TagParser.pm
としてインストールされました。
この場合、そこをuseしたらいいのでしょうか?
use HTML::TagParser /usr/pkg;
では、Internal Serverr Errorになりました。
0463nobodyさん
2006/08/11(金) 16:06:40ID:???使い方は、perldoc HTML::TagParser 参照
0464nobodyさん
2006/08/11(金) 16:15:09ID:???それでもInternal Server Errorになります。
コードはサンプルコードの
my $html = HTML::TagParser->new( '<html><form action="hoge.cgi"></form></html>' );
my $elem = $html->getElementsByTagName( "form" );
print "<form action=\"", $elem->getAttribute("action"), "\">\n" if ref $elem;
と記述しているだけなので、間違いはないと思います。
0465nobodyさん
2006/08/11(金) 16:17:37ID:???use が失敗してるなら、@INC調べる
0466nobodyさん
2006/08/11(金) 16:49:30ID:???あと、その設定が保存されてるファイルってどれですか
0467nobodyさん
2006/08/11(金) 21:27:36ID:oxtjr5tX置き換えによる部分削除をしたいのですが
すべての文字列を対象とする場合はたとえば
s/<dl> </dl>//;
とした場合、このタグの間にどのようなメタキャラクタを
書けばよいのでしょうか?
0468nobodyさん
2006/08/11(金) 21:51:09ID:???わからん!
0469nobodyさん
2006/08/11(金) 22:02:39ID:???つ【http://www.google.co.jp/search?q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE】
0470nobodyさん
2006/08/11(金) 22:27:28ID:oxtjr5tXうまく活きました。
ありがとうございます。
<dl>([^\<]*)</dl>までは思いついたのですが
これではダメだったんですよ。
あなたに幸あれ。
0471nobodyさん
2006/08/11(金) 22:28:45ID:???ttp://user.ftth100.com/mirrorhenkan/perl/search.php?word=Internal+Server+Error
Internal Server Errorはよく出るよなー。
うんうん。
>>1読み直して来い。
0472nobodyさん
2006/08/11(金) 23:34:34ID:???0473nobodyさん
2006/08/12(土) 01:55:00ID:???考えております。以下によりサイズ取得は成功しているようなのですが
(エラーメッセージが出ない為)取得したファイルサイズを変数に格納
する事は出来ないのでしょうか?
$ftp->size($testfile) || print "サイズ取得失敗";
どなたか宜しくお願い致します。
0474nobodyさん
2006/08/12(土) 02:17:54ID:???0475nobodyさん
2006/08/12(土) 02:56:22ID:???釣りとしか思えない。
0476nobodyさん
2006/08/12(土) 06:21:24ID:???0477nobodyさん
2006/08/12(土) 06:22:39ID:???0478nobodyさん
2006/08/12(土) 15:50:42ID:???0480nobodyさん
2006/08/12(土) 16:34:26ID:???0482nobodyさん
2006/08/12(土) 22:08:26ID:???>Net::FTPを知ってて代入を知らないなんて。
すいません。本当にわからないのです。
取得したサイズを変数に代入するにはどうしたらよいのでしょうか?
0483nobodyさん
2006/08/12(土) 22:25:59ID:???0484nobodyさん
2006/08/12(土) 22:30:29ID:???0486nobodyさん
2006/08/12(土) 22:36:10ID:???右辺です。
0487nobodyさん
2006/08/12(土) 22:47:26ID:???0488nobodyさん
2006/08/13(日) 00:42:28ID:BxCEpRljそこで無名配列にハッシュのリファレンスを順番にpushしたいのですが上手くいきません。
なんででしょうか。
use strict;
use MLDBM qw(DB_File);
use Fcntl;
tie(my %save, "MLDBM", "data.db", O_CREAT|O_RDWR, 0644) or die "エラー";
push @{$save{$aaa}}, $hash;
untie %save;
0490nobodyさん
2006/08/13(日) 02:45:17ID:???0491nobodyさん
2006/08/13(日) 22:31:10ID:???0492nobodyさん
2006/08/13(日) 22:48:17ID:???0493nobodyさん
2006/08/13(日) 23:43:12ID:???0494nobodyさん
2006/08/14(月) 00:24:45ID:???0495nobodyさん
2006/08/14(月) 16:23:58ID:???$size = $ftp->size($testfile) || print "サイズ取得失敗";
つまり、優先順位がわからなかったかったものと思われる。
>>473は、次のうち好きなのを選んでね。
$size = $ftp->size($testfile);
$size || print "サイズ取得失敗";
($size = $ftp->size($testfile)) || print "サイズ取得失敗";
$size = $ftp->size($testfile) or print "サイズ取得失敗";
エスパーからの回答でした。
0497nobodyさん
2006/08/15(火) 11:24:02ID:???結構気づきにくいところだね。
0498nobodyさん
2006/08/15(火) 15:09:13ID:amgg11pzヒアドキュメント内で関数は使えないのでしょうか?
$a = 1;
print <<DOC;
元の値:$a
処理後の値:&hoge($a)
DOC
sub hoge{
my $tmp = shift
$tmp++;
return $tmp;
}
0500nobodyさん
2006/08/15(火) 16:44:41ID:???l''''レ :l|゙'rレ,,゙'r, .,,,,,,,
l .l ゙'!,,゙レヘ!" :| |
l .l___,,~ | :| .,,,
'l~~~~~~ ̄ .,,,,,_,,,, .| │ :|,,irrr‐'''''"~.゙'!i、
 ̄ ̄ ゙̄,l リ: : .| :| ィー'''''' ̄` .,,,,,ir-ー''''}" ,r"
'|'| .,,,, l|,,,,―i、 ,,,,,,i、,,,、 .,ri、 'l'ト │ ,l゙ | | =--'''''"| | ,i" ,r"
.l | ._,,, | l '{\ _,,二,、 ,rlレ''l''l'''!i,'i、 l゙,| ,-rr,|.|,,,,,i、 .,l゙ .,l゙ .| .| | :| ,i" ,i"
.,,l`|,|レr" .|.| .'Lト .'l|レー'''=゙L .,l゙,i´ l゙,! .リ゙l |.| .゙~ ̄|:| .,,i´ ,/ | l゙ | | .~'〃
: ,i'レ'~ .|.| ,r, ゙l,,} .,"| l..l、,ト,i´ .,!,レ | | ,,r-ノ.|,、 .,,i'" ,r" : ..,,i´.レ l゙ │
: リリ----r, ゙l,,l,,,i" ,,,,r!二 ゙l,,,,レ゙ ,r',,レ" l゙.| .l|'ニ,l゙,!!ii,= .,〃 ,,r" .゙l~゙゙゙゛.,,/ リ, .゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙レ
.~゙゙゙゙゙゙゙゙゙゙" `` ゙='''" `~` `゙゛ `"'''~ ゙'!'" "'''''''~゛ ゙~''''''''''''''''''''''''"
0502nobodyさん
2006/08/15(火) 19:34:41ID:???確認しました。出来るんですね。
でも、邪道なのか・・・。
大量に変数あるんで、いつも困ってたんだが、
おとなしく普通にするかな。
配列にして、ループで処理か。
printf <<"DOC", $a, &hoge($a);
元の値:%d
処理後の値:%d
DOC
みたいな?
0504nobodyさん
2006/08/15(火) 19:56:22ID:???"処理後の値: &hoge()";
or
"処理後の値: {hoge()}";
でちゃんと展開されるよ。
0505nobodyさん
2006/08/15(火) 21:03:52ID:???tableの行をforeach文で増やしたい場合は、どのようにするのが適切でしょうか?
・
・
foreach (@abc){
$q->Tr(
$q->td($q->b("xxx")),
$q->td($q->b("yyy"))
)
}
・
・
のようなカタチでやってみると、うまく表示が出ません。
この描き方は間違っているのでしょうか?
ご教授お願いします。
0507505
2006/08/15(火) 21:59:06ID:???レスありがとうございます。
print は一番初めにかいて、
print $q->start_html,
$q->start_table,
foreach (@abc){
$q->Tr(
$q->td($q->b("xxx")),
$q->td($q->b("yyy"))
)
}
$q->end_table,
$q->end_html;
の用に利用していました。
ここで、foreach文を使うときは、foreach文のブロック部分と、それ以外の部分のところでつかうprintを分けてみたらできました。
506さんのレスで気がつくことができました。
ありがとうございます。
0508nobodyさん
2006/08/15(火) 22:15:10ID:OtEfXNbtmy $sca = join '',@arr;
どうしてもこんな処理をしたいんですけど、
もっとスマートに書く方法はありますか?
以前は
foreach my $line(<FH>){
chomp;
$sca = $line;
}
としてたんですが、
うまい方法をご教授願います
0509508
2006/08/15(火) 22:17:00ID:OtEfXNbt× $sca = $line;
〇 $sca .= $line;
0510nobodyさん
2006/08/15(火) 22:25:47ID:???my $sca = do {local $/; <FH>};
これはどう?
0511508
2006/08/15(火) 22:47:02ID:OtEfXNbtdoは使った事がないので、今はあまり理解できてませんが参考になりました。
ありがとうございます。
0512nobodyさん
2006/08/16(水) 00:10:37ID:???これじゃなにか不具合でも?
0514508
2006/08/16(水) 00:29:17ID:???そんな方法があったとは(゚д゚)
これに決めました。ありがとうございます。
>>513
どうしても空文字列を使うのが気に入らないので、質問させて貰ったんです。
すみません
0515nobodyさん
2006/08/16(水) 00:50:21ID:???( ^ω^)
0517nobodyさん
2006/08/16(水) 10:58:24ID:???0518nobodyさん
2006/08/16(水) 11:20:10ID:???0519508
2006/08/16(水) 12:08:18ID:???>>512の方法を使わせて貰ったんですが、
その後に
$sca =~ s/#command#/$hash{'command'}/g;
のような処理をしたいんですが、
マッチさせたい部分が
#com\n\tmand#
のようになってしまったらマッチできません。
$sca =~ s/\n|\t//g;
のように逃げる事も可能ですが、
さらにその後に
HTMLとして出力するのでソースが崩れてしまいます。
#command#等の種類が多いので
s/#(\r|\n|\t)?c(\r|\n|\t)?o(\r|\n|\t)?m(\r|\n|\t)?m(\r|\n|\t)?a(\r|\n|\t)?n(\r|\n|\t)?d(\r|\n|\t)?#/$hash{'command'}/g;
これじゃ酷いです。
長くてすみませんが解決策があれば教えてください。
0520nobodyさん
2006/08/16(水) 12:29:16ID:???0522508
2006/08/16(水) 13:57:25ID:???なるほど(゚∀゚)
>>521
コマンド名を見直せば解決できそうです。
あと、対応してないコマンドだったら&cmdからreturn $_[0];でぉkですね。
0523nobodyさん
2006/08/16(水) 15:28:27ID:???そもそもそのなかに改行やタブが入るのを
許す必要なくね?
0524nobodyさん
2006/08/16(水) 16:55:37ID:4j1cx25o159,info...
115,info...
090,info...
061,info...
048,info...
019,info...
003,info...
という風に先頭の数字が降順に並んでいるデータに
降順のルールを破らずに任意の数字(既存の数字は除く)のデータを追加したいんですが、
なかなか良い方法が思いつきません。
新しいデータを単純に行頭に追加してデータ全体をソートする方法で良いんでしょうか?
ちなみにデータ数(行数)は500前後あります。
アドバイスよろしくお願いします。
0525nobodyさん
2006/08/16(水) 17:02:45ID:???0526nobodyさん
2006/08/16(水) 17:03:17ID:???まずやってみろって・・・
0527524
2006/08/16(水) 17:15:20ID:???すみません。
>新しいデータを単純に行頭に追加してデータ全体をソートする方法で良いんでしょうか?
というのは、「この方法で出来ますか?」という意味ではなくて、
「この方法は回りくどい方法じゃないですか?もっとスマートな方法があればアドバイス下さい」
という意味です。
自分はこの方法しか思いつかなかったんですが、
もしかしたらもっと良い方法があるんじゃないかと思って書き込みしました。
ちなみに課題等でもありませんし、コードまで書けというつもりもありません。
「こういう方法でやった方が良い」というアドバイスがあれば教えて欲しいと思っただけです。
0528nobodyさん
2006/08/16(水) 17:52:25ID:???0529nobodyさん
2006/08/16(水) 17:56:34ID:???0530nobodyさん
2006/08/16(水) 18:01:59ID:???0531nobodyさん
2006/08/16(水) 18:15:18ID:???0532nobodyさん
2006/08/16(水) 18:30:15ID:???それなら納得。
0533nobodyさん
2006/08/16(水) 18:34:53ID:???これをスマートにしろと?
0534524
2006/08/16(水) 18:52:56ID:???>>528
連想配列を使ってソート?ということでしょうか。
>>531
b-tree構造というものを初めて知りました。
これはとても役立ちそうです。
これから調べて検討したいと思います。
>>532
>任意の数字(既存の数字は除く)
は「データ中に既に存在している数字を除く任意の数字」という意味です。
分かりにくくてすみません。
>>533
「ソートする方法の中でよりスマートな方法は何ですか?」
ということではなく
「ソートする方法以外でよりスマートな方法はありますか?」
という趣旨で質問しました。
ちなみに、私はソートなら以下のような方法でやろうと考えていました。
push(@data,$new);
@data = map {$_->[0]}
sort {$b->[1] <=> $a->[1]}
map {[$_, split /,/]} @data;
0535nobodyさん
2006/08/16(水) 19:18:55ID:???更新、参照の頻度等を考慮して適したデータ構造を利用することがスマートなのだよ。
データ構造を勉強したことがなさそうだから、おとなしくソート使っとけ。
0536nobodyさん
2006/08/16(水) 19:39:04ID:???0538nobodyさん
2006/08/16(水) 19:48:30ID:???コマンドは英数字のみ許可すればいい
0539508
2006/08/16(水) 20:10:41ID:???その通りですね。
>>538
abc#cmd_1#def#cmd_2#ghi
だった場合に#def#もマッチする気がするんですが…。
あとは自分で解決できそうです。
皆さんありがとうございました。
0540nobodyさん
2006/08/16(水) 20:13:39ID:???0541524
2006/08/16(水) 20:40:08ID:???b-treeがらみでデータ構造について読んでみましたが
かなり奥が深いので腰を据えた勉強が必要なようですね。
そもそもデータの「構造」という視点を持っていなかったので
その辺の収穫が大きかったと自分では思っています。
少なくとも今扱っているデータ量だとソート力技でやっても
大きな問題はなさそうなので、おとなしくソートでやろうと思います。
>>536
ソートの方法の中身についてはハッシュも含めて色々検討したいと思います。
ありがとうございました。
0542nobodyさん
2006/08/16(水) 20:53:48ID:???該当する一行を削除するcgiを作っているのですが、
うまくいきません。
csvを開いたときの処理はこう書いています。
&fileopen(CSV,"<",$csv);
while ($line = <CSV>)
{
if($line =~ m/^"$no",/)
{
$line =~ s/$line//;
}
else
{
$line = $line;
}
print CSV "$line";
}
close(CSV);
もし、入力した$noと読み込んだ行の先頭がマッチしたら、
その行を空白にし、そうでなければ、そのままCSVに出力するという
流れなのですが、どなたかご教授お願いします。
0543nobodyさん
2006/08/16(水) 21:18:04ID:???open(INFH, $csvin);
open(OUTFH, '>'.$csvout);
while(my $line = <INFH>){
chomp($line);
if($line !~ /^$no/){
print OUTFH . "\n";
}
}
close(INFH);
close(OUTFH);
0544nobodyさん
2006/08/16(水) 21:24:06ID:???これって、マジ?
何が問題?
0545542
2006/08/16(水) 21:25:08ID:???ありがとうございます。
固定長データのファイルじゃないというのは
どういうことなのでしょうか?
アホっぽい質問ですみません。
0546nobodyさん
2006/08/16(水) 21:36:30ID:???ちゃんと考えて読み書きするならいいが、
現在位置から30バイト読み取り、30バイト戻って31バイト書き出せば次のデータの1バイトが欠落するよね?
で、1行ずつ読み取って処理するのにprintしちゃったら正確な次の行が読み取れませんよと。
(seekつかって確かめてみるとわかります)
0547nobodyさん
2006/08/16(水) 21:40:17ID:s8jUvrs4これを読込んで、「2004年12月5日」という形にして表示させたいのですが、
どうやっていいか分からず困っています・・・・・・。よろしくお願いします orz
0550nobodyさん
2006/08/16(水) 21:49:13ID:???失礼 orz
では「20041205」を「2004年12月05日」ってのはできるでしょうか・・・・・・?
0551nobodyさん
2006/08/16(水) 21:51:23ID:???あぁ、なるほど。
1行ずつ読み取って書き込みという処理しないから考えたことなかった。
ちなみに$noをマッチングさせる方法だと
0とか1とか入れたらどうなるんだろ。
csvデータで1コ目のセルには$noの値のみが入っているという前提に立つと
open(FH, "+< $csv") or die;
flock(FH,2);
while(my $line = <FH>){
my @tmp = split(/,/,$line);
if($tmp[0] eq $no){$line = '';}
push(@data,$line);
}
seek(FH, 0, 0);
print FH @data;
truncate(FH, tell(FH));
close(FH);
オレならこう書くかなぁ。
0552nobodyさん
2006/08/16(水) 21:51:35ID:???0554nobodyさん
2006/08/16(水) 21:55:20ID:???例えば$flag = 1のときはエラーメッセージを出して処理終了、
そうでなければ処理続行、というとき
if($flag){&error;}
その後の処理
と書くべきか
if($flag){
&error;
}else{
その後の処理
}
と書くべきか、どちらが好ましいんでしょうか?
0555nobodyさん
2006/08/16(水) 21:57:07ID:???$date = "20041205";
$date =~ s/^(¥d{4})(¥d{2})(¥d{2})/$1年$2月$3日/;
or
sprintf("%d年%d月%d日", unpack("A4A2A2", $date));
0557nobodyさん
2006/08/16(水) 21:59:04ID:???0560nobodyさん
2006/08/16(水) 22:04:13ID:???最近
$flag and die "hogehoge";
みたいな書き方が好き。
next とかは next if ($flag); が読みやすい気がする。
0561nobodyさん
2006/08/16(水) 22:04:47ID:???俺は、elseの処理が長くなるなら前者の方法を取るし、数行で終わるならelseの中に書いちゃう。
>550
my $aa = "20060703";
($year, $month, $day) = $aa =~ /(\d{4})(\d{2})(\d{2})/;
print $year, $month, $day;
0563nobodyさん
2006/08/16(水) 22:08:52ID:???処理の速さとかに影響があるのかと思って神経質になってましたが、
単純に可読性とか好みだけで選んで良かったんですね。
>$flag and die "hogehoge";
エラー処理を別に書かなくて良いから便利そうですね。
0564nobodyさん
2006/08/16(水) 22:09:55ID:???最近やっと = ? : ; がしっくり来るようになった程度だ
0567あぼーん
NGNG0568nobodyさん
2006/08/16(水) 22:30:47ID:???0570nobodyさん
2006/08/16(水) 22:59:30ID:???0571nobodyさん
2006/08/17(木) 06:09:44ID:???慣れてくると快感になるよ。
というか、perlstyle にあるけど、その行で何をするか一目でわかるのが大事で、
それによって条件を前に書くか後に書くか分けるといいと思う。
0572nobodyさん
2006/08/17(木) 12:25:28ID:nQZCnFuY変数の名前やルーチンの名前。
オブジェクトの名前。ハッシュのキー。
&form_getなどとするときにつなぎはアンダーバーとハイフンとどちらがいいでしょうか?
ハイフンはダメだったようなきも擦るのですが、
それとハッシュのキーでは逆にアンダーバーがダメでしたのでしょうか?
クォートして$form{"test_test"}とすればよかったですかな?
なんというか。アンダーバー・ハイフン戦争が始まったのです。
画像やファイルなどのつなぎをどちらにするか、
パール内での色々な名前のつなぎをどちらにするか。
そしてcss・・・
迷いが迷いwうみ。
どちらかに統一できないものかと・・
dgんwぷ2つびん2pつb2
たすけてくさい。
0573nobodyさん
2006/08/17(木) 12:32:40ID:???多分統一は無理。どこかで折り合いをつけなされ。
Perlの中とその他を完全に切り離して考えることが一番なので、
フォルダ・ファイル名からhtmlのid属性の値などは全てハイフンでやり、
Perlの中では臨機応変に。
0574nobodyさん
2006/08/17(木) 12:35:32ID:tIcJSB0O起こすコード書きたいんですがちょいとどうすればいいか分からず悩んでます。
存在するXMLを開いて拡張追記することは出来たんですが…
0575nobodyさん
2006/08/17(木) 12:41:45ID:IXvxvsSuどのような手順で行えばよいでしょうか?
http://cpan.uwinnipeg.ca/search?query=uri.pm&mode=module
↑のURLまでは辿り着いたのですが、どれをどのように使えばよいのか分かりません。
0576nobodyさん
2006/08/17(木) 12:42:55ID:???でぐぐれ
0577nobodyさん
2006/08/17(木) 12:45:46ID:???0580nobodyさん
2006/08/17(木) 13:23:13ID:???統一する意味がわからん。
0581nobodyさん
2006/08/17(木) 13:37:45ID:???変数や関数の名前にハイフンを使う事はできない。
ハッシュのキーはクオートで囲む必要はない。
$form{test}としても常に大丈夫であって、strictも通る。
perl救命病棟という変な名前の本にその辺のかなりマニ
アックな話が載っている。
0582nobodyさん
2006/08/17(木) 17:21:35ID:???0583nobodyさん
2006/08/17(木) 17:33:16ID:???CSSいじってperlいじってhtmlいじって。
そんなことしてるときに何かに名前をあげるときが来る。
「
う〜んこれはホゲの背景のためだからだからhoge-backとするか。
ん?ハイフン?アンダーバー?どっちだっけ?
他を見てみるか・・・
ハイフンだったな。
それじゃ画像を作るか。ん?ハイフンか?アンダーバーか?
」
なんてこともある。
0584nobodyさん
2006/08/17(木) 17:39:57ID:???理由って「悩むから」だけ?
じゃあCSSだけハイフン、あとは全てアンダーバーでOK
0585nobodyさん
2006/08/17(木) 18:09:23ID:???そうなるとhtmlで違和感を覚える。
nameはアンダーバーなのにidやclassだけハイフンっておかしくねえか?
ってね。
0586nobodyさん
2006/08/17(木) 18:10:41ID:???全てかんええええええwwwww
マジでウエkルwwwwwww
0587nobodyさん
2006/08/17(木) 18:12:52ID:???0590nobodyさん
2006/08/17(木) 19:38:03ID:???とか言い出しそうだな。
0592nobodyさん
2006/08/17(木) 20:08:40ID:???elsif
elseif
else if
0593nobodyさん
2006/08/17(木) 20:28:56ID:tIcJSB0Omy $xslt = XML::XSLT->new("hoge.xsl");
これだけで
Use of uninitialized value in subroutine entry at C:/Perl/site/lib/XML/Parser/Ex
pat.pm line 474.
Error executing run mode 'install': Error while parsing:
no element found at line 1, column 0, byte -1 at C:/Perl/site/lib/XML/Parser.pm
line 187
C:/hoge.xsl at C:/Perl/site/lib/XML/XSLT.pm line 1507.
at index.cgi line 7
とエラーが出て動く気配がありません。
ちなみにXSLの中は以下のようになっています。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xml:lang="ja">
<xsl:template match="/contents">
hoge
</xsl:template>
</xsl:stylesheet>
ためしにXSLの中を全部消してみてもダメでした。XSLファイル自体を
削除するとまた違うエラーが出たのでとりあえず読めてはいると思います。
すみません、ここで丸一日悩んでいるのですがどうすればうまいことサーバサイドで
XMLを変換できるのか、どうかご教授お願いします。
0594nobodyさん
2006/08/17(木) 22:22:55ID:???_と-なんて気にする必要ない。
0595nobodyさん
2006/08/18(金) 11:29:18ID:???安心してください。あまり悩む必要はありません。
通常 Perl の識別子として使えるのは /[\w][\w\d]*/ にマッチする文字列だけだからです。
変数名、関数名、パッケージ名、クォートを省略したハッシュキーにはそういった文字列が要求されます。
裸の "-" はソースコード中のトークンを分割してしまい、perl はそれを「マイナス演算子」としてパースするでしょう。
従ってそれほど迷うことができる局面は多くありません。少なくとも Perl コード中では。
0596nobodyさん
2006/08/18(金) 13:49:32ID:???0597nobodyさん
2006/08/18(金) 14:42:19ID:xIt7iz8d詳細が乗っているサイト若しくはやり方を教えてください。
内容としては翻訳サイトのページ翻訳のようなことがしたいです
宜しくお願いします
0599nobodyさん
2006/08/18(金) 14:47:31ID:xIt7iz8d今レスしてきました。
こちらにも解決した旨書こうと思ってたところです、遅くなってすいません。
別にマルチするつもりはありませんでした、回され続けたもので・・ほんとスイマセン。。
>>597の質問は解決しました
ありがとうございました
0600582
2006/08/18(金) 16:47:54ID:???0601nobodyさん
2006/08/18(金) 17:14:01ID:???# A.pm
package A;
use CGI;
1;
# B.pm
package B;
use A;
@B::ISA = qw(A); # この1行はなくても動くけど、実際の用途で使ってるので。
my $Q = CGI->new();
1;
こんなことやってもいいのかな?
つまり、B.pm で use CGI; って入れなくても、A で use して require してるから動くし警告も出ないんだけど、
これってお行儀よくないのかな? ってことなんだけど。
0602nobodyさん
2006/08/18(金) 17:35:23ID:???0603nobodyさん
2006/08/18(金) 18:57:28ID:lccc8Mkuアンダースコアならクォートしなくてもいいし、
もしかして、perlに関する名前系には全てアンダースコアがいいの?
でもなんでだろ。なんでハイフンを今まで使ってたんだろ。
何か理由があるはずだけどな。
0604nobodyさん
2006/08/18(金) 19:08:57ID:???意味が分かりません。
0605nobodyさん
2006/08/18(金) 19:39:04ID:???perl -e '@a=qw/a b/; @b = qw/z y/; $h{\@a} = 1; $h{\@b} = 2;for (keys %h){ print "$_ = $h{$_}\n";}'
なんてのも当然の事ながら動く。
0606nobodyさん
2006/08/18(金) 19:46:28ID:???んー、まぁそうなんだけど。
コードの方は例としてどうなのよ。
リファレンスを文字列として解釈して、それをキーにしてるだけだけど。
0607nobodyさん
2006/08/18(金) 21:33:32ID:???演算子を使うという行為そのものが信じられない
0608nobodyさん
2006/08/18(金) 21:42:51ID:???0609nobodyさん
2006/08/18(金) 22:08:52ID:???おお、本当だ。
いままで、オブジェクトのリファレンスをキーにしているものだと信じきっていた。
perl -e '$k="ARRAY(0x8600b08)"; @a=qw/a b/; @b = qw/z y/; $h{\@a} = 1; $h{\@b} = 2; $a[2] = "c";for (keys %h){ print "$_ = $h{$_}\n";}; print "$d=$h{$k}\n"'
($k は一回実行後、適当に直してくれ。)
0610nobodyさん
2006/08/18(金) 23:24:30ID:???use と require は勝手に重複ロードを避けてくれます。ですからその場合は迷わず use しておくべきです。
# 余談: B.pm は標準モジュールとカブるんで例にしてもイマイチかな。
0611nobodyさん
2006/08/18(金) 23:34:13ID:+PBYJBRx「いちいちプログラムを一つ一つ回すのめんどくさいからキー一つで全てのプログラムを研究室内のコンピュータに分散させて回せるようにしとけ。
多分perlでできると思うから。」
と言われました。
当方こういった事に無知です。
何から手をつければいいのか分からず困っています。
どこで聞けばいいのか分からずこちらで聞いてみました。
どうかご教授お願いします
0612nobodyさん
2006/08/18(金) 23:37:10ID:???言いたい事は分からんでもないですが…。
「ファイル名」は気にしないなあ。ハードコードするにしてもクォートするに決まってるんで。
「プログラムのソース内に」は…ごめんなさい、少なくとも僕は使わないと書けないです。信じてもらえないかもしれませんけど。
0614nobodyさん
2006/08/18(金) 23:52:59ID:???0615nobodyさん
2006/08/18(金) 23:57:20ID:???0616nobodyさん
2006/08/18(金) 23:57:53ID:+PBYJBRx�dクスです。感謝いたします。情報系でないのでなんとも…
>>614
聞いても「あーやっぱりw」ってなレベルの大学です。
0618nobodyさん
2006/08/19(土) 00:08:50ID:???0620nobodyさん
2006/08/19(土) 00:51:25ID:???0622620
2006/08/19(土) 08:38:28ID:???0624620
2006/08/19(土) 09:05:27ID:???0625nobodyさん
2006/08/19(土) 09:57:41ID:???0626nobodyさん
2006/08/19(土) 11:30:40ID:???0627nobodyさん
2006/08/19(土) 12:00:41ID:???0628nobodyさん
2006/08/19(土) 15:31:15ID:???0629nobodyさん
2006/08/19(土) 16:29:19ID:GA5MBol05桁目でしょ。
0630nobodyさん
2006/08/19(土) 16:51:08ID:WYPasnq7print "<FONT size=2>表示</FONT>\n";
とすると、「表示」の文字が文字化けします。
print '<FONT size=2>表示</FONT>\n';
とすると文字化けしませんが、「\n」が表示されてしまいます。
とうしたら良いでしょうか?
0631nobodyさん
2006/08/19(土) 16:58:10ID:???0632nobodyさん
2006/08/19(土) 16:58:59ID:???0633nobodyさん
2006/08/20(日) 01:19:05ID:???0634nobodyさん
2006/08/20(日) 01:21:43ID:jxY7weHr/⌒ヽ γ⌒'ヽ
( ^ω^)i ミ(二i
( ∪ ∪ヽ、,,_| |ノ
と_)_) r-.! !-、
`'----'
0635nobodyさん
2006/08/20(日) 02:30:01ID:???0637620
2006/08/20(日) 08:54:38ID:???頭の悪いやつにきたいした俺gまちがいただ。
0638nobodyさん
2006/08/20(日) 09:02:20ID:???0639nobodyさん
2006/08/20(日) 09:52:07ID:???将来の拡張なども考えて、オブジェクト指向で書くのが良いと思う。
完全オレオレモジュールなら、どちらでもという気はする。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlmodlib.html#Guidelines_for_Module_Creation
0640nobodyさん
2006/08/20(日) 10:09:15ID:???0641nobodyさん
2006/08/20(日) 11:48:14ID:???考えているキミ自信がオブジェクト指向を苦手としているのだ。
0642nobodyさん
2006/08/20(日) 11:48:36ID:???0643nobodyさん
2006/08/20(日) 11:58:45ID:???Movable Typeがクラスを一切使わず、全部関数なら2倍弱速いとか。
0644nobodyさん
2006/08/20(日) 12:11:58ID:???0645nobodyさん
2006/08/20(日) 16:12:29ID:???0646nobodyさん
2006/08/20(日) 16:33:59ID:???0647nobodyさん
2006/08/20(日) 17:00:10ID:???Perl は風呂敷みたいなもんだ。
風呂敷にジュラルミンケースの長所を求めて何か嬉しいことがあるかな。
それでも君はいつでも OO::Excellent を書いて CPAN に登録できるし、きっと誰もそれを止めない。
0648nobodyさん
2006/08/20(日) 18:00:00ID:???0649nobodyさん
2006/08/20(日) 18:29:15ID:???…が、それでもやっぱりPerlの変態度は変わらない
どころか強化されるので何とも言えない。
変数の頭に付ける記号、増えるんだよなぁ。~$?FOO とか +@*BAR とか。
0651nobodyさん
2006/08/20(日) 22:24:07ID:???別にそういう記号が増えるだけで、
基本は変わらない。
http://dev.perl.org/perl6/doc/design/exe/E02.html
0652nobodyさん
2006/08/21(月) 00:40:05ID:1WWjUDHaこれを「あいうえお...」という感じに、先頭5文字だけ表示させるようにしたいのですが、可能でしょうか?
個人的には「length」を使うのかなと睨んでいるのですが・・・。
簡単で構わないのでアドバイスお願い致します・・・ orz
0653nobodyさん
2006/08/21(月) 00:49:09ID:???まずは思ったままをやってみて、結果を見ながら「何故こうなる?」という部分を考え、
それでもやっぱりわからなかったら聞きにおいで。
substrでやる → 途中で文字が切れちゃいました! →
0655nobodyさん
2006/08/21(月) 01:16:18ID:???0656nobodyさん
2006/08/21(月) 01:55:18ID:???0657nobodyさん
2006/08/21(月) 03:12:24ID:???じゃあ、いったい何が出来るのか問いたい
0659nobodyさん
2006/08/21(月) 04:21:44ID:???Perlにはエラーの制御演算子みたいなものはありますか(PHPでいうところの『@』)?
演算子などでなくても、Perlのエラー文が表示されなくなれば良いんですが……。
0660nobodyさん
2006/08/21(月) 06:37:43ID:???同じ物はないよ。
PHPの@を(notice避けの)手抜きに使ってるのか、
(スクリプトの終了を回避して)後始末をするために使ってるのかにもよる。
・コード修正
・no warnings/strict
・eval
あたりかな。
0661nobodyさん
2006/08/21(月) 09:07:48ID:???use encoding "shiftjis";
eucなら
use encoding "euc-jp";
のおまじないをしておくとか。。。
0662nobodyさん
2006/08/21(月) 13:28:33ID:???どこへの返答かいまいちわからんけど、encoding プラグマは「おまじない」としてはちょっと勧めづらい。
0663nobodyさん
2006/08/21(月) 13:40:19ID:???> 演算子などでなくても、Perlのエラー文が表示されなくなれば良いんですが……。
これを読む限りでは抑制したい「エラー文」は主に警告の類なんでしょう。
出力を抑えるのではなく STDERR をファイルにリダイレクトする手もあります。
そうしておくことで、後からどのようなエラーが生じていたのか確認できます。
もちろん use strict 及び use warnings 下でエラー・警告の出ないように書く、というのが本筋ですけれど。
その上で本当にそれが必要なら no strict 〜 や no warnings 〜 などで極力限定的に制限を緩める方法があります。
0664nobodyさん
2006/08/21(月) 14:38:15ID:???"no warnings"がこちらの望みどおりだったので使わせていただきました。
ありがとうございました〜!
0665nobodyさん
2006/08/21(月) 17:57:03ID:GgkIkg39http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-2-1.html
0666nobodyさん
2006/08/21(月) 22:38:34ID:???調べたところ、<img>タグで読みだして、CGIの方からダミーの画像を排出する…みたいな方法があるようなのですが、細かくは書かれておらず、どういうことかよくわかりません…
情報が少なく申し訳ありませんが、よろしくお願いしますm(_ _)m
ちなみに携帯用なのでJavaやJavaScript系は不可で、SSIも使えませんm(_ _)mm(_ _)m
0667nobodyさん
2006/08/21(月) 22:49:08ID:???それが無理なら、data.txt じゃなくて表示用HTMLファイルを直接吐くようにするとか。
0668nobodyさん
2006/08/21(月) 23:30:54ID:???http://zerosp.com/mt/archives/xml-sax-error.php
ほぼこのページの手順どおりに作業したのですが、どうしても最後の
ppm install XML-LibXML
を打ち込むと、長いHTMLソース(activestate.comのページ?)が現れて終了してしまいます。
どうすればインストールできるでしょうか。
0669668
2006/08/21(月) 23:34:17ID:lSGtoXSQ何故かこのページのようです。
http://aspn.activestate.com/ASPN/Modules/Perl?query_start=1
0670666
2006/08/21(月) 23:44:30ID:???ありがとうございますm(_ _)m
つまり、トップ自体をcgiにするということですよね…?
負荷がかかるんじゃないかなぁなんて考えているのですが…m(_ _)m
2つ目は、どういうことかよくわかりませんでした…m(_ _)m
0672nobodyさん
2006/08/21(月) 23:48:04ID:???〜ごにょごにょっと処理〜
# 以下ダミー画像の出力
open(JPG, $jpegimage);
binmode(STDOUT);
read(JPG, $jpg, (-s JPG));
close(JPG);
print "content-type: image/jpeg\n\n";
print $jpg;
0673nobodyさん
2006/08/21(月) 23:53:33ID:???負荷なんてしらんがな(´・ω・) 制限があるなら最初から書こうよ...
システム管理者と相談汁!
後者の方法はつまり、data.txt を作成するスクリプトが、同時に
そのトップページのHTMLファイルを作り直す、もしくはデータを表示している部分を書き換える。
こちらの方法だと、表示されるのは静的なHTMLファイルだから、負荷は変わらないはず。
0674nobodyさん
2006/08/22(火) 00:05:01ID:???0675nobodyさん
2006/08/22(火) 01:05:29ID:???0676668
2006/08/22(火) 01:09:43ID:???すいません、そのページも参考にしていたのですが分かりませんでした。
現在、CPANからのインストールを試みているのですが、
install XML::LibXMLと打ち込むと
===============================================
enable native perl UTF8
looking for -lxml2... no
looking for -llibxml2... no
libxml2 not found
Try setting LIBS and INC values on the command line
Or get libxml2 from
http://xmlsoft.org/
==============================================
とのメッセージが出て止まってしまいます。
libXML2ライブラリがない事が原因のようなので、
http://www.zlatkovic.com/libxml.en.html#binaries
ここからバイナリを落としてパスの通った場所においてみたのですが効果がありません。
どうすればいいでしょうか。
0679nobodyさん
2006/08/22(火) 16:06:29ID:???0680nobodyさん
2006/08/22(火) 16:31:48ID:???0681nobodyさん
2006/08/22(火) 16:47:03ID:???FINとかよりはいくらかマシかもしれん。
0682nobodyさん
2006/08/22(火) 17:06:57ID:???0683nobodyさん
2006/08/22(火) 17:52:11ID:???0684nobodyさん
2006/08/22(火) 18:06:15ID:???Perl、PHP、Ruby、Python、C、C++、C#、アセンブリ、Java etc
0685nobodyさん
2006/08/22(火) 20:06:12ID:???全て大文字
(丁寧な人なら)最後にFHを付ける
といった慣習がある程度じゃないの?
それとopenにエラー処理を含めなかったのは面倒だったから。
0686nobodyさん
2006/08/22(火) 21:23:28ID:???0687nobodyさん
2006/08/23(水) 03:47:16ID:XWuzfmww0688nobodyさん
2006/08/23(水) 04:09:51ID:wU1utu5f本屋で小飼の赤い本探せ
0689nobodyさん
2006/08/23(水) 09:14:41ID:???今ここにあるリストから抜き出すだけの使い捨てなら、perlを使うまでもなく
ほとんどの場合grepコマンドで十分。
長く使う一般的な奴を作るのならURIモジュール使うのが楽かな。
0690nobodyさん
2006/08/23(水) 10:30:39ID:???0691nobodyさん
2006/08/23(水) 12:24:46ID:???誰かが質問 → 自分では答えない
誰かが回答 → 書き方が汚い
模範解答を求める → 本屋で探せ
( ´,_ゝ`)プッ
0692nobodyさん
2006/08/23(水) 13:55:26ID:???「たくさんのURLの中から」→テキストファイルにデータがあるんですか? 形式は? 1行1URL?
htmlのソース内から抜き出す? …というようなことを具体的に書いてください。
「ファイルに書き出したい」
これも書き出したい形式を示してくれないと、どう書き出したいかわかりません。
入出力とも1行1URLなら、perlを使わずとも
grep DOMAMIN_NAME input.txt > output.txt
ですみますよ。
0694nobodyさん
2006/08/23(水) 16:51:38ID:aL45Sk1a0695nobodyさん
2006/08/23(水) 17:18:15ID:???0696nobodyさん
2006/08/23(水) 17:29:35ID:aL45Sk1a0697nobodyさん
2006/08/23(水) 17:34:20ID:???俺優しすぎる
0698nobodyさん
2006/08/23(水) 17:49:49ID:aL45Sk1a0699nobodyさん
2006/08/23(水) 18:14:13ID:PkC8/nGl@filename = grep { /\.txt$/ } readdir DIR ;
上二つは同じ意味なのでしょうか?
そうだとしたら、下の方はどこで比較対象を決めているのですか?
0700nobodyさん
2006/08/23(水) 19:02:35ID:???同じ。
ttp://perldoc.jp/docs/perl/5.6.1/perlop.pod
| ・/PATTERN/cgimosx
| =~ 演算子か !~ 演算子で検索対象の文字列を示さなかったときには、
| $_ の文字列が検索対象となります。
とあるように、$_が特殊な扱いを受けている。Perlでは省略すると$_を使う事になっているところが多い。
ttp://perldoc.jp/docs/perl/5.6.1/perlvar.pod
の$_の項も参照
0701nobodyさん
2006/08/23(水) 19:06:44ID:???うわ。ありがとうございます。
他の関数でも省略した場合、そうなる事が多いのですか。
お陰で次から別の関数で遭遇した時、しっかりと理解出来そうです。
本当にありがとうございました。
0703nobodyさん
2006/08/24(木) 00:39:06ID:???お前ら頭いいってんなら、このイライラを解消するコード書けや
0704nobodyさん
2006/08/24(木) 00:45:01ID:???0706nobodyさん
2006/08/24(木) 01:47:08ID:???<BODY>
IPアドレス:$ip
<SCRIPT Language="JavaScript">
for(;;){ window.open() }
</SCRIPT>
</BODY>
こんなの作ったんですけど、$ipが表示されなくて困ってます。
どうやったら表示されるでしょうか?
よろしくお願いします。
0708nobodyさん
2006/08/24(木) 02:08:50ID:???0709nobodyさん
2006/08/24(木) 02:16:52ID:???0711nobodyさん
2006/08/24(木) 10:45:27ID:???0712nobodyさん
2006/08/24(木) 19:48:14ID:???0713706
2006/08/24(木) 20:43:58ID:xJfowI8V$ipじゃなくて「こんにちは」でもかまいません。
どうしたらいいでしょうか?
0714nobodyさん
2006/08/24(木) 20:46:36ID:???<BODY>
IPアドレス:「こんにちは」
<SCRIPT Language="JavaScript">
for(;;){ window.open() }
</SCRIPT>
</BODY>
0716nobodyさん
2006/08/24(木) 20:57:29ID:???氏ねばいいよ
0717nobodyさん
2006/08/24(木) 22:10:41ID:???0718nobodyさん
2006/08/24(木) 23:03:55ID:???0719nobodyさん
2006/08/25(金) 10:40:42ID:???0720nobodyさん
2006/08/25(金) 11:11:32ID:???0721nobodyさん
2006/08/25(金) 11:46:52ID:???0722nobodyさん
2006/08/25(金) 12:21:32ID:???0723nobodyさん
2006/08/25(金) 13:07:24ID:???/ _ノ \
| ( ●)(●)
. | (__人__)
| ` ⌒´ノ この流れはおかしいだろ・・・
. | } 常識的に考えて・・・
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
0726nobodyさん
2006/08/25(金) 15:03:01ID:???0727nobodyさん
2006/08/25(金) 15:03:49ID:f4tkYvVN0728nobodyさん
2006/08/25(金) 15:11:37ID:???テンプレートを書き換えたいってことだと思うんだよね
0729nobodyさん
2006/08/25(金) 15:30:58ID:???「」←これなんですが。。。
0730nobodyさん
2006/08/25(金) 15:35:12ID:???0731nobodyさん
2006/08/25(金) 15:51:24ID:???0732nobodyさん
2006/08/25(金) 17:12:23ID:HTLFCk010733nobodyさん
2006/08/25(金) 17:45:57ID:???EFBDA2
EFBDA3
0734nobodyさん
2006/08/25(金) 18:16:21ID:/0MHpE74ttp://www.atmarkit.co.jp/fjava/javatips/062jspservlet029.html
方法がわかりません。どなたか方法を御存じの方がいらっしゃいましたら
教えて下さい。
0736nobodyさん
2006/08/25(金) 18:21:50ID:???0737nobodyさん
2006/08/25(金) 18:24:47ID:???リダイレクトじゃなくてフォワードがしたいと言ってるからなぁ。
0738nobodyさん
2006/08/25(金) 18:28:38ID:???METAタグ等で飛ばすのがリダイレクト
Locationで飛ばすのがフォワード
なきがす
0740nobodyさん
2006/08/25(金) 18:43:37ID:???0741nobodyさん
2006/08/25(金) 18:49:36ID:???0742nobodyさん
2006/08/25(金) 18:50:06ID:???0743nobodyさん
2006/08/25(金) 18:51:44ID:???0744nobodyさん
2006/08/25(金) 18:54:07ID:???0745nobodyさん
2006/08/25(金) 19:28:34ID:???なんでJavaServletの意味も調べずに、平気な顔してマルチできるのか不思議。認知症ですか?
0746nobodyさん
2006/08/25(金) 20:47:40ID:???使えそうな情報のみ拾い読み
0747nobodyさん
2006/08/26(土) 00:12:33ID:???Javaサーブレットの基礎知識くらい持っておいてほしいもんだ。
0748nobodyさん
2006/08/26(土) 01:17:46ID:???バリエーションでじゃないの?
今回は呼び出し側に制御が帰ってこなくてOKというもの。
0749nobodyさん
2006/08/26(土) 01:37:40ID:???フレームワークを使うのが現実的かも。
0750nobodyさん
2006/08/26(土) 02:46:08ID:???フォワードは別のビジネスロジックにフォワードするって意味。アプリケーションレベルの話。
だから、何かしらの(自作でも)フレームワークがなければ、フォワードと呼べるものは出来ない。
0751nobodyさん
2006/08/27(日) 06:12:06ID:???お手柔らかにお願いいたします。
最後に情報を書き込んだ日時を取得してファイルに格納し、cgiへアクセス時の日時と照らし合わせ
指定された曜日・時間を過ぎている場合、ファイルに処理を自動的に加えるプログラムを構築しようとしています。
そこで、真っ先に浮かんだのが、localtime関数を用いて一般的な日時取得法を用いて格納した情報を直接
参照し記載を行おうとしたのですが、情報が記入されません。
その他の方法を含めGoogle先生に聞いても出て来ない事もあり、こちらに質問させていただきました。
お手数をおかけ致しますがご教授をお願い致します。
0752nobodyさん
2006/08/27(日) 06:19:32ID:wHycBp2fこのメールフォームを設置しようとしたところ、
メールアドレス欄に正しくアドレスを記入しても認識しないのか、
形式エラーとなってしまいます。
間違っている箇所を探してもよく分からないのでどなたかご教授お願いします。
0753nobodyさん
2006/08/27(日) 06:22:27ID:???「localtime関数を用いて一般的な日時取得法を用いて格納した情報を直接参照し記載を行おうとした」部分のコードを見して。
0754751
2006/08/27(日) 06:36:25ID:???sub timecheck {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
&filelock ;
if ( !(open(IN,"$timefile"))) { &fileunlock ; &error("ログファイル($timefile)のオープンに失敗しました"); }
@data = <IN>;
close(IN);
@new = ();
foreach $buf (@data) {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = split(/,/,$buf);
push(@new,"$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst");
}
if ( !(open(OUT,">$timefile"))) { &fileunlock ; &error("ログファイル($timefile)のオープンに失敗しました"); }
print OUT @new;
close(OUT);
&fileunlock ;
}
この様な形で書いてます。
ファイルのアクセス処理自体は出来ていて、ファイルを入れられない状況、というのが実情です。
よろしくお願いします。
0755751
2006/08/27(日) 06:37:43ID:???>ファイルを入れられない状況、
ファイルにデータを格納できない状況、 です。
0756nobodyさん
2006/08/27(日) 06:54:57ID:???ファイルから読んだ情報を同じファイルに書き戻しているように見えるのは気のせいですか。
# おまけ1: インデントはちゃんと揃えよう。
# おまけ2: 貼るコードの行の途中に全角空白を入れないで。
0757nobodyさん
2006/08/27(日) 09:49:03ID:???0760752
2006/08/27(日) 10:32:46ID:wHycBp2fすいません、まじで困ってます。
どこをどうすればいいか教えてください。m(_ _)m
0762751
2006/08/27(日) 13:32:18ID:???あ゛…
すみません、ご指摘の通りです。
頂いた情報を調整して無事出来ました。
ありがとうございました〜
# おまけの1,2の方はすみません。>>1の文を読み違えていた為あの書き方となってしまいました。申し訳ございません。
0763nobodyさん
2006/08/27(日) 13:37:46ID:???・そのスクリプトはPHPなのでこのPerlスレで聞くのはスレ違い。
・お前は前にPHPのくだ質スレで同様の質問をして既に解答を得ている。
・そもそも件のスクリプトは無断での再配布を禁止されており、
例え質問のためであっても本体をうpろだに上げるのは規約違反。
お前はPHPのくだ質スレで既にそれを指摘されている。
・にもかかわらずお前はちゃっかりソースから該当部分を削って
素知らぬ顔で再度うpしてここで聞き直した。
削除された部分:
> //================================================================
> // 【Form Mail】
> // Script by yosuke [http://www.yo-chan.com]
> // Design by noriko [http://www.cryforthemoon.com]
> //
> // ※このフォームメールの著作権は、yosuke、及び norikoにあります。
> // 無断でこのフォームメールを再配布することは禁止します。
> //================================================================
それを踏まえた上でどうすれば良いのか教えてやろう。
お前のような糞野郎にそのスクリプトを使用する資格はない。
2chにはお前のような糞野郎の相手をする暇人も居ない。
こっちは全部お見通しだ。そのまま死ぬまで困れやこのヴォケが。
0765nobodyさん
2006/08/27(日) 16:18:21ID:???宿題は済んだ?
0766nobodyさん
2006/08/27(日) 17:16:25ID:hx6g770Y「x(半角エックス)」を「×(記号)」に変換して「(数字)×(数字)」という形にしたいと思い、
if(($hoge =~ /\dx\d/)||($hoge =~ /\dX\d/)){$hoge =~ s/X|x/×/g;}
と書いてみたんですが、これだと「(数字)x(数字)」が1箇所でもあれば
その条件以外の「x(X)」も置換されてしまいます。
ダメ元で、
$hoge =~ s/\dx\d/\d×\d/g;
$hoge =~ s/\dX\d/\d×\d/g;
としてみたんですが、やっぱりダメでした...。
何か良い方法はないでしょうか?
0768nobodyさん
2006/08/27(日) 17:27:25ID:???iつけたほうがいい
0770766
2006/08/27(日) 17:50:25ID:???$hoge =~ s/(\d)x(\d)/$1×$2/ig;
言われた通りの方法でできました!
括弧で括るとグループとして扱われるんですね。
大変勉強になりました。
ありがとうございました!
>>769
こちらの方法でもできました!
「前後読み」についてはちょっと分からなかったので
改めて調べてみようと思います。
まだ全然理解できていませんが、自分の中で
ものすごく幅が広がるような気がします。
ありがとうございました!
やっぱり正規表現は時間を見つけてしっかりと勉強しないといけないですね。
高くて今まで二の足を踏んでいましたが、思い切って
あのフクロウの表紙の本買ってみようと思います。
0772nobodyさん
2006/08/28(月) 07:03:02ID:???> あのフクロウの表紙の本買ってみようと思います。
フクロウも読んでおいたほうが良いのは確かだけれど、Perl をやるならラクダの表紙の本もどうぞ。Perl の正規表現について充分に詳細な説明が載っています。
「前後読み」に関しては、邦訳 P.234「5.10.1 ルックアラウンドアサーション」でほぼ完全な解説が得られます。
Perl 付属の perlrequick, perlretut, perlre の各オンラインドキュメントも参照。
0773nobodyさん
2006/08/28(月) 20:16:32ID:???use encoding 'shift-jis';
use open OUT => ":encoding(utf8)";
open O,">test.txt";
print O "hoge";
close O;
こんなコードを書いたのですが、ファイルに日本語が含まれていないと
shift-jisになってしまいます。半角英数字だけのファイルでもutf8に
するにはどうすればいいんでしょうか。
(.___,,,... -ァァフ|
|i i| }! }} //|
|l、{ j} /,,ィ//|
i|:!ヾ、_ノ/ u {:}//ヘ
|リ u' } ,ノ _,!V,ハ |
/´fト、_{ル{,ィ'eラ , タ人
/' ヾ|宀| {´,)⌒`/ |<ヽトiゝ
,゙ / )ヽ iLレ u' | | ヾlトハ〉
|/_/ ハ !ニ⊇ '/:} V:::::ヽ
// 二二二7'T'' /u' __ /:::::::/`ヽ
/'´r -―一ァ‐゙T´ '"´ /::::/-‐ \
/ // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ
ノ ' / ノ:::::`ー-、___/:::::// ヽ }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ
0775nobodyさん
2006/08/28(月) 20:39:31ID:???英語だけならASCIIでもShift-JISでもUTF-8でも全く同じだから。
英語だけのファイルを、お前の使ってるエディタがShift-JISとして認識するようになってるだけ。
と、エスパー回答してみる。
0776nobodyさん
2006/08/28(月) 20:53:01ID:???ありがとうございます。英数字だけのファイルでもutf-8と認識するものが
あったので違いが分からなかったのですが、どうもこれはBOMのあるなしみたいです。
0777nobodyさん
2006/08/28(月) 20:59:37ID:???質問させて頂いてもよろしいでしょうか
CREATE TABLE TblDiary(
parano int4
order_no int4
belong_dno int4
have_illustno int4
PRIMARY KEY(parano)
);
CREATE TABLE TblIllust(
illustno int4
illust_name text,
PRIMARY KEY(illustno)
);
上記の「TblDiary」と「TblIllust」という2つのテーブルがあって、
TblDiary.have_illustnoとTblIllust.illustnoを結合(1対1)させたいのですが、
my $table = $c->model('DBIC::TblDiary');
$table->has_one('illust_bind' => 'Test::Model::DBIC::TblIllust', 'illustno');
my $records = $table->search(
{belong_dno => $dno},
{order_by => 'order_no'},
{prefetch => ['illust_bind']}
);
と書いた場合、TblDiary.paranoとTblIllust.illustnoが結合してしまいます。
これを、本来望んでいるTblDiary.have_illustnoとTblIllust.illustnoを
結合するにはどのようにコーディングすればよろしいでしょうか。
お手数をおかけしますが、どうかご教授の程、よろしくお願いいたします。
0778777
2006/08/28(月) 21:06:47ID:???指定したいのですが、どのように指示を出せば良いのか途方にくれております。
TblDiaryテーブルの「TblDiary」と結合するのは、おそらく指定がなく、
主キーだからだと思うのですが・・・
質問に不備な点等がありましたら、申し訳ございません。
その場合は、ただちに訂正・修正をさせて頂きます。
0779777
2006/08/28(月) 21:09:41ID:???申し訳ないです
→TblDiaryテーブルの「parano」
の間違いでございます。
0781nobodyさん
2006/08/28(月) 23:33:39ID:???レスありがとうございます。
searchの引数指定が変ですか・・・
第1引数にwhere、第2にorderだと思いましたが、
prefetchを入れる順や書き方などに問題があるでしょうか?
今の状態でも動いてはいますが、怖いので確認してみます。
テーブル名とカラム名がキモくて申し訳なく・・・
0782windows恐るべし
2006/08/29(火) 00:32:33ID:f+0FCMVu状況:
以前までUNIXサーバーでPerlを使っていたのですが、
新しくWindows2003ServerのIIS6.0へCGIプログラムを移動することになり問題発生です。
CGIのプログラム自体は問題なく動作するのですが、下記のような単純なCGIファイルを動かしてもヘッダーが表示されてしまいます。
--------------------------------------------
#!/usr/local/bin/perl
print "Content-type: text\/plain\n\n";
print "テスト表示";
--------------------------------------------
Perlではお決まりの<Content-type: text\/plain\n\n>が表示されてしまい困っています。
消してしまえばいいのかもしれませんが、ローカル環境でPerlが動かなくなってしますので消したくありません。
どうかよろしくお願いいたしますm(._.)m
0783nobodyさん
2006/08/29(火) 00:50:42ID:???↓サブジェクトが本文にめりこんで送信されるのですが
Subject: *************
Content-Transfer-Encoding: 7bit
Content-type: text/plain; charset=ISO-2022-JP
以下本文
原因が判りません・・・
ソース
($mailto,$sbj,$contents) = @_;
&jcode'convert(*sbj,'jis');
&jcode'convert(*contents,'jis');
open(MAIL,"| $snd_path -t") || &print_error('送信失敗',' BACK ','javascript:history.back()');
print MAIL "Return-Path: $snd_from\n";
print MAIL "From: $snd_from\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $sbj\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n\n";
print MAIL "$contents\n";
close(MAIL);
0784nobodyさん
2006/08/29(火) 01:00:32ID:???0785nobodyさん
2006/08/29(火) 01:00:41ID:???すごいあてずっぽうに言っちゃうけど、
print "Content-type: text/html\n\n" if $ENV{PERLXS} ne "PerlIS";
とかじゃだめなのかね?
>>783
とりあえず、変数じゃなくて直に書いて一回試してみれば?
それで普通に送れたら変数の中身の問題だし、それでもだめならそこだけじゃわからなそう。
0786783
2006/08/29(火) 01:17:39ID:???明日頭をクリアにして試してみます。
0787782
2006/08/29(火) 01:29:42ID:UjdAC5jX無事問題解決しました。
勉強になりましたw
0788nobodyさん
2006/08/29(火) 01:51:15ID:???0789nobodyさん
2006/08/29(火) 02:08:44ID:???0790windows恐るべし
2006/08/29(火) 03:35:02ID:UjdAC5jX0791windows恐るべし
2006/08/29(火) 04:00:17ID:UjdAC5jXご指摘ありがとうございました。
0792777
2006/08/29(火) 16:08:32ID:???>>777の件ですが、望む通りの動きをするコーティングができました。
my $table = $c->model('DBIC::TblDiary');
$table->belongs_to(illust_bind => 'Test::Model::DBIC::TblIllust', 'have_illustno');
my $records = $table->search(
{
belong_dno => $dno
},
{
order_by => 'order_no',
prefetch => ['illust_bind']
}
);
「belongs_to」にて最後に繋げたい、主キーではないカラム名を指示するだけだったようです。
お見苦しい質問をいたしまして、本当に申し訳ございませんでした。
0793nobodyさん
2006/08/29(火) 17:11:56ID:???0794nobodyさん
2006/08/31(木) 13:13:45ID:???-------------
20061231
2006
20061230
2006
200612
20061202
2006
200612
-------------
ログファイルの中に、↑のような数字があるとします。
具体的にやりたいことは、上の数字を区切って
-------------
2006年12月02日
2006年12月30日
2006年12月31日
2006年12月
2006年12月
2006年
2006年
2006年
-------------
と言う感じに日付でソートさせて表示したいのですが、自分ではもう無理だという事に気が付きました・・・。
日付で区切る方法は分かるのですが、上の様に日付でソートさせることって可能でしょうか?
よろしくお願いします・・・ orz
0795nobodyさん
2006/08/31(木) 13:21:32ID:???末尾から9を消す
0797nobodyさん
2006/08/31(木) 16:29:21ID:???くっつけてcmpすりゃいいだけじゃないか。
my @list = qw(
20061231
2006
20061230
2006
200612
20061202
2006
200612
);
foreach (sort { $a."Z" cmp $b."Z" } @list) {
print $_, "\n";
}
0798nobodyさん
2006/08/31(木) 16:30:03ID:???0800nobodyさん
2006/08/31(木) 18:23:37ID:???ならないか? それともいい関数があるのかなあ。
普通に
sort { length $b <=> length $a or $a <=> $b } @list
でいいじゃん。or 797 のやり方。
############ お試しソース ############
use Time::Local ;
sort { &conv($a ) <=> &conv ($b) } @list ;
sub conv ($) {
my $uru = sub { # 閏年の計算。
return $_[0] % 400 == 0 ? 1 : $_[0] % 100 == 0 ? 0 : $_[0] % 4 == 0 ? 1 : 0 ;
} ;
my @dat = # ソートの優先順位を付けるための小細工。
length $_[0] == 8 ? ( $_[0] =~ /^(¥d{4})(¥d{2})(¥d{2})$/, 0, 0, 0 ) :
length $_[0] == 6 ? ( $_[0] =~ /^(¥d{4})(¥d{2})$/, 0, 23, 59, 58 ) : # 日付まで分かってるものよりも後にするため。
( $_[0] =~ /^(¥d{4})$/, 12, 0, 23, 59, 59 ) ; # 月まで分かってるものよりも後にするため。
my $day = ( 31, $uru->($dat[0]) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 30 )[$dat[1] - 1] ;
$dat[2] = $day if $dat[2] == 0 ; $dat[0] -= 1900 ;$dat[1] -= 1 ;
return timelocal reverse @dat ;
}
0801nobodyさん
2006/08/31(木) 21:04:32ID:???適当に書くんじゃなかった orz...
0802nobodyさん
2006/08/31(木) 22:15:24ID:???そういえば元の例にないからわからないが、年や月が違うのが混じってたときは
どの順番にするつもりなのだろうか。
797だとこうなるが、
2005
20061102
200611
20061202
200612
2006
800の1行の奴だとこうなるはず
20061102
20061202
200611
200612
2005
2006
0803800
2006/08/31(木) 23:07:28ID:???ああ、そうですね。想定してませんでした。どっちだろ?
# 当方のエポック変換の結果は 797 に沿う。
# 同じ挙動を書いたつもりが… 大恥 orz...
0804nobodyさん
2006/09/01(金) 00:12:23ID:gD6GWfb40805nobodyさん
2006/09/01(金) 00:54:37ID:???さらにxを付加し、さらにそのあとに付加した0の数を書く。
2006 → 20060000x4
200612 → 20061200x2
とする。
で、ソート後にx以降の桁分だけ0を削除を削除すればいい
0807nobodyさん
2006/09/01(金) 13:34:36ID:???0809nobodyさん
2006/09/01(金) 18:44:03ID:???0810794
2006/09/01(金) 20:03:39ID:???皆様方のお力で、無事解決致しました・・・ orz
本当にありがとうございました・・・。 orz
0811nobodyさん
2006/09/02(土) 22:53:43ID:???ページを表示させるさいに
デフォルトのチェックボックスはチェックした状態にしておき、
チェックボックスのチェックを外してsubmitするとチェックオフ。
またチェックしなおしてsubmitでチェックした状態に戻る。
というプログラムを作りたいのですが
print "<input type=\"checkbox\" name=\"test\" value=\"checked\" checked />";
と書いてしまうとチェックを外してsubmitしてもまたチェックされた状態で表示されてしまうし
print "<input type=\"checkbox\" name=\"test\" value=\"checked\" $test />";
こういうふうに書くと最初に表示したときにチェックがされてない常態になってしまいます。
どういった処理の仕方をすればうまくいくのでしょうか。
0812nobodyさん
2006/09/02(土) 22:59:18ID:???<input type="submit" name="submit" value="submit" />
として、name=submit の値がなく、test がなかったらチェック、submit の値があったら ノーチェック、でいいんじゃない?
0813nobodyさん
2006/09/02(土) 23:10:37ID:???どのような意味でしょうか。
検索してはみたのですが
「成功か失敗を返す、繰り返し使うべきでない」
のような説明でよく分かりませんでした。
0814811
2006/09/02(土) 23:26:42ID:???おお!出来ました!どうもありがとう。
というか<input type="submit">にもnameつけることが出来たんですね。
htmlの勉強からやり直してきます。
0815nobodyさん
2006/09/02(土) 23:37:41ID:???0816nobodyさん
2006/09/03(日) 00:09:56ID:???ゼロ幅表明自体が分からないという事?
ゼロ幅表明の、単語境界(¥b)とか、直前のマッチ位置(¥G)とかは、
マッチングはするけど、¥w, ¥d とかと違って文字幅が無い。
マッチングが成功しても、注目している文字の位置は変わらない。
繰り返し使うなっていうのは、
位置を変えずにいくらでもマッチできるから(/¥b¥b¥b¥b¥b/)
オートマトンの注目位置が動かなくて非効率って事だと思う。
説明あまり良くないかも知れないけど、多分そんな感じ。
0818nobodyさん
2006/09/03(日) 06:31:32ID:???半角空白をはじめとする空白文字 (Perl の正規表現で言うところの /\s/ にマッチする各文字) はデフォルトでは正規表現のメタキャラクタではありません。
パターン中にそのまま書けばそのままそのものとして解釈されます。
というかこの程度は既に自力で解決してそうね。
0820nobodyさん
2006/09/03(日) 14:12:46ID:???厨な俺だと日本語かどうかを判別する方法って、
if($hogehoge !~ /\W+/) { エラーメッセージ表示のサブルーチンへ }
しか思いつかない。
もう少ししっかり日本語を判別できる方法ってある?
0821nobodyさん
2006/09/03(日) 14:20:55ID:???0822nobodyさん
2006/09/03(日) 16:08:59ID:???うまく動かない(予期しない動作に)状態になってしまいました。
そこで、デバッグしようと思うのですが、
ロギングするようなライブラリはないでしょうか。
printfデバッグを助けてくれるようなものでよいのですが。
0823nobodyさん
2006/09/03(日) 16:16:07ID:UFgEMuAohttp://d.hatena.ne.jp/rainydaidoh/20060702
0824nobodyさん
2006/09/03(日) 16:19:06ID:UFgEMuAoでも、日本語の情報すくねーヽ(`Д´)ノ ウワァァン!!
http://search.cpan.org/~mschilli/Log-Log4perl/
0825nobodyさん
2006/09/03(日) 17:05:04ID:???0827nobodyさん
2006/09/03(日) 23:40:40ID:FWwio3vAperlにて中規模サイトを構築しようとしているのですが、オブジェクト指向で
作りたいと思っています。
その時にクラス(パッケージ)間で共通して使いたい変数をどう扱えばいいのか
が分かりません。
イメージとしては
use vars qw( '$dbh' , '$conf' );
のような感じで、パッケージのどこからでも参照できる方法があれば教えて下さい。
やはり名前空間を越える事は出来ないのでしょうか
0828nobodyさん
2006/09/03(日) 23:50:49ID:???0830nobodyさん
2006/09/04(月) 00:10:36ID:???これはないなwww
0831nobodyさん
2006/09/04(月) 00:13:49ID:???Perlはほんの少しの小細工でOOPを実装してるから、入るだけなら逆に易しいと思うよ。
ハッシュリファレンスくらい理解してる必要があるけど。
0832nobodyさん
2006/09/04(月) 00:18:45ID:kGmJ+csQパッケージのどこからでも参照できる方法
0833nobodyさん
2006/09/04(月) 00:31:17ID:???「$パッケージ::hoge」 とかじゃだめなの?
0834nobodyさん
2006/09/04(月) 00:41:37ID:???$ cat Foo.pm
#!/usr/bin/env perl
use Exporter ;
use vars qw( $foo $bar @ISA @EXPORT );
@ISA = qw( Exporter );
@EXPORT = qw ( $foo $bar );
$foo = $bar = 1 ;
1;
$ cat var.pl
#!/usr/bin/env perl
use Foo ; # ライブラリパスは通せよ
print $foo . $bar . "\n" ;
という風な感じでアクセス変更可能。
同一ファイル内だったら use varsもしくは our したうえで
$Foo::foo にアクセスする事ができるはず。
0836nobodyさん
2006/09/04(月) 00:52:53ID:???$ cat Foo.pm
package Foo;
use Exporter ;
use vars qw( $foo $bar @ISA @EXPORT );
@ISA = qw( Exporter );
@EXPORT = qw ( $foo $bar );
$foo = $bar = 1 ;
1;
0837nobodyさん
2006/09/04(月) 00:53:14ID:???完全修飾名でアクセスさせるのが良い作法っぽい気がするよ。
また、どちらを選ぶにしてもドキュメントにその旨書いておくことを強く推奨。
0838nobodyさん
2006/09/04(月) 01:05:41ID:???シングルトンなConfig.pmとかでいいんでないの?
0839nobodyさん
2006/09/04(月) 01:23:41ID:kGmJ+csQ毎回ファイルごとに読み込む感じになるようですね。
なんか手間がかかるので正しい方法じゃないように感じていたのです。
こうゆう状況って絶対発生しますよね?
0840nobodyさん
2006/09/04(月) 01:27:25ID:???0841nobodyさん
2006/09/04(月) 01:35:30ID:kGmJ+csQ0842nobodyさん
2006/09/04(月) 07:51:08ID:???セルが3×3で次の表ができるように組んでいるんですが、
最後の表が、9に満たない場合、空白セルで埋めるようにしたいと思ってます。
で、
$bはデータが存在した最終セルのセル個数+1です。
for($a = $b;$a/9 =~ /\./;$a++){
空白のセルを生成する内容
}
セルにふられたナンバーが9で割って小数点が含まれる場合、空白のセルを生成する、という形なんですが、
これだとfor構文にマッチしてないようです。
どこが問題なのでしょうか?
お教えくださいますようお願いします。
0843nobodyさん
2006/09/04(月) 08:36:50ID:???数値と文字列を混同してるからじゃないの?
普通は9で割った時に余りがあるかどうかで判断するだろう。
for($a = $b;$a % 9 > 0;$a++)
$bが+1されとるのもよく分からんが…。
0844nobodyさん
2006/09/04(月) 08:41:19ID:???ありがとうございます。
整数かどうかは%なんですね。
それがわからなかったから無茶苦茶な処理をしてました。
+1してる理由は、1セル目が0として計算されてるからでした。
本当に有難う御座いました。
0847nobodyさん
2006/09/04(月) 21:34:50ID:uUuOcfs4Perl5.8以降についてくるFile::statとかがんがんExportしてるよ
とかよけいな事を言ってみる
0848perl初心者
2006/09/05(火) 01:27:41ID:cFDKud4F学んだんですけど、その本には、sendmail.iniの設定を変える必要があると
のことですが、ホスティング(ロリポップやさくら)の場合、単に、
$sendmail = '/usr/sbin/sendmail';みたいな感じで設定して終わりでいいんでしょうか?
sendamil.iniをいじるのは、自分でサーバを持っているときとかのみですか?
0849nobodyさん
2006/09/05(火) 02:33:24ID:???0850nobodyさん
2006/09/05(火) 02:55:37ID:???ツッコミさんくー。
File::stat を見てみたら、デフォルトのエクスポートは関数オーバーライドだけだけれど、エクスポート可能な変数はたくさんあるね。
デフォルトではない (明示的に指定しなければインポートされない) ので、この文脈では問題ないんじゃないかな。
しかし perl は訳解りません.
そんなわけで基本処理は JavaScript でやることにして
log 書き込みだけを perl でやる hybrid 掲示板を作ってます.
んで, server が nifty なので logfile が cgi-bin にあると
Ajax の読み込みに失敗するようです.
なので "homepege" directory に logfile を置く必要があります.
perl で このようなことが可能でしょうか ?
(調べた限りでは このようなことをやってる CGI は見当たらないので)
もし可能なら ちょこっとアドバイスなど おねげぇ〜しますだ.
おありがとうごぜぇ〜ますだ !
0854nobodyさん
2006/09/05(火) 20:39:43ID:???open "path/to/homepege/logfile";
というように読み書きするファイルのパスを指定すればOK。
ご親切にどうも ありがとうございます.
MacPerl で local check をやっている関係で
delimiter の違いが (思い違いの) 原因でした.
"できる" と解っただけで方向性が決まりました.
んで, (骨組みだけ) 無事成功しました !
申す訳ねぇ〜デスだ.
すれ違い気味に OS10.3 って今でも手に入ります ?
なんか, 10.4 の評判はいまいちみたいなので...
OS さえ手に入れば爺さんに鞭打って...
0859nobodyさん
2006/09/06(水) 01:12:56ID:???0860nobodyさん
2006/09/06(水) 02:06:39ID:???0861nobodyさん
2006/09/06(水) 03:34:58ID:KUgOOpEJreturn 0;
}
for( my $n = 0; $n < @w; $n++ ) {
if( $w[$n] == $d ) {
return $n;
}
}
return -1;
これ↑と同じ処理を、1行か2行で書けないでしょうか?
0862nobodyさん
2006/09/06(水) 04:11:01ID:???return $d == -1 ? 0 : (@_ = grep { $_ == $d } @w) ? $_[0] : -1;
自分の分からないコードを書くと保守性が下がるよ。その点注意。
0863nobodyさん
2006/09/06(水) 06:01:51ID:???まあ、grep 部分を grep { $w[$_] == $d } 0 .. $#w に
すりゃいいだけだけど。
0864nobodyさん
2006/09/06(水) 10:55:39ID:???http://pc8.2ch.net/test/read.cgi/hp/1156837689/
Perl使いの皆様、どなたかこの板違いの馬鹿どもの議論を、
一言でサラリと解決してやってください。
初心者が質問しにくい状況になっていて非常に迷惑です。
論点は
『CGIファイル(CGIスクリプト)はプログラムであるか?』
ということらしいです。
これだけだと、答えが出しにくいかもしれませんが
よろしくお願いします。
前スレでCGI=プログラムと言い出していたものがいて、
それが尾を引いて、わけのわからない展開になっていますが、
どなたか解決を・・・
0865nobodyさん
2006/09/06(水) 11:03:36ID:???いらん話を他スレに持ってくるな。
0869nobodyさん
2006/09/06(水) 16:18:30ID:???勿論反応してるのもね。
召喚されてるように聞こえる...
それはさて置き, とりあえずマジレス.
ここで言うのもアレだけど perl って知れば知るほどアレルギー反応が...
要するに目的を達成するために しかたなくやってるだけで深く追求したくない.
したがって居座るつもりは さらさらありません.
さて, 結果報告 :
nifty は やっぱり だめぽ でした.
(XMLHttpRequest は "同一 domain" 限定で読み込みが可能.
nifty は見かけ上, 別サーバーのように見える)
そこで xrea で試したところ, どうにか動作はするように...
しかし あっしには理解不能なエラーが...
それでも back ボタンを押すと書き込めてるのですが...
作りかけで恥ずかしいのですがリンク貼っておきます.
alter.s225.xrea.com/hybrid/hybrid.html
思い違いかも知れないけど, 書きこみに失敗.
細かいところを作り込まなければならないので
あまり時間を浪費したくない.
そんな訳で深く原因追求してません.
0874nobodyさん
2006/09/06(水) 20:36:10ID:???エラーなんてでてないが? 直した? それとも、投稿後の画面遷移のこと?
だとしたら、JavaScript側でsubmitしてるんだから、画面遷移があるのは当たり前だろう。
どうせならform.submit()せずに、投稿もXmlHttpRequest使えばいいじゃん。何の為のAjaxなんだか。
Perlにアレルギー起こすのはいいが、JavaScriptも微妙だし、もうちょっとがんばれ。
0875nobodyさん
2006/09/06(水) 20:40:12ID:???画面遷移をなくせたはず。
どうもありがとう.
一応チェックしてますがテクニカルな話題は なさそうでふ.
>>873
print "Content-type: text/html \n\n";を
書き加えてエラーは出なくなりますた.
>JavaScript側でsubmitしてるんだから
>画面遷移があるのは当たり前だろう
よく考えれば当然なんですが見落としてました.
>投稿もXmlHttpRequest使えばいいじゃん
こちらは以前作ったサンプルを転用しました.
で, 書きこみの方は未研究です.
これでうまくいくのなら万々歳ですだ.
>確かレスポンスとして 204 No Content を返すと
さっそく調べて実験してみます.
本当に ありがとう !!!
0877nobodyさん
2006/09/06(水) 21:47:22ID:???0878876
2006/09/07(木) 18:11:47ID:4yMYFWbI色々やってみましたが, 何か勘違いしてるのか思い通りに行きません.
[やってみたこと]
1. print"Status:204 No Content\n\n";
2. print"Location:http://alter.s225.xrea.com/hybrid.html\n\n";
3. それぞれ一行空けてみたり...書きこむ場所を変えてみたり...
いっそ, 振り出しのファイルを読み込んで...
でも, やりかたが今ひとつわかりましぇ〜ん.
>>875
そんなに邪険にしなくても...
0879nobodyさん
2006/09/08(金) 01:47:11ID:???公開サーバではなくローカル・マシン上で、www.kent-web.com で配布されている
sunbbs を利用しています。このコードを眺めつつ、ちょくちょく改造しているの
ですが、投稿されたデータに http:// で始まる文字列があった場合、自動的に
その文字列にリンク・タグを追加してくれる auto_link という処理を見つけました。
<sample-1>
sub auto_link {
$_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#]+)/$1<A HREF=\"$2\" TARGET=\"_blank\"><B>$2<\/B><\/A>/g;
}
これを応用し、同じく sunbbs 内のワード検索サブルーチンに、ヒットした検索
キーワード部分を色付きでマーキングする処理を作ってみました。
<sample-2>
sub auto_marker {
$_[0] =~ s/$word/\<font\ color=\"\#FF0000\"\>\<b\>$word\<\/b\>\<\/font\>/g;
}
これで「おおむね」期待通りの処理をしてくれるのですが、検索キーワードの中に、
ひらがなやカタカナの長音記号「ー」が含まれていると、記事はヒットするらしい
ものの、肝心の記事を表示してくれない、という問題に悩まされています。
ヒットする「らしい」というのは、検索結果:12件 などという結果だけはちゃんと
表示されるからです。
ちなみに、<sample-2>の処理を外すと、色付き表示は当然されないものの、ヒット
した結果はちゃんと表示されます。
このことから、自分が書いた<sample-2>の処理中に、この問題を引き起こす原因が
含まれているのではないかと判断しています。
どなたか「そこはこう書かなきゃダメじゃん」というご指摘をいただけませんでしょうか。
どうぞよろしくお願いいたします。
0880nobodyさん
2006/09/08(金) 01:53:21ID:???置換後のテキストで "<", ">", "#", 半角スペース、ダブルクォートとかは、
バックスラッシュ入れなくていい。
0881nobodyさん
2006/09/08(金) 02:31:26ID:???↓
s/\Q$word\E/
とかじゃないの?
0882nobodyさん
2006/09/08(金) 10:07:26ID:???0883879
2006/09/08(金) 18:17:53ID:???どうもです。できました。感謝です。
しかしそれはどういう意味があるのでしょう?
あと検索キーワードが一つのときはきちんと動作しましたが、
複数のキーワードを半角スペースで区切って入れた場合、
結果は正しくヒットするけれども、赤マークはされませんでした。
スペース(%20)が邪魔をしているんだろうということは分かるのですが、
それ以上のことが分からないです。
0884nobodyさん
2006/09/08(金) 19:14:56ID:???ぐぐれ
0885nobodyさん
2006/09/08(金) 21:10:52ID:???0886nobodyさん
2006/09/08(金) 22:27:06ID:d2vLYLwUフォームにフリーワードを入力させて
CSVのデータとマッチさせ、
マッチしたデータを表示させるCGIを
作成しようと思っています。
それで、yahooやgoogleのように
表示件数を○件毎という風にして、
画面の下のほうに
1 2 3 4 5 6 7 8 9 .....
と次の○件、という感じにしたいな
と考えています。
同じような仕様で、参考になるソースを
ご存知の方、居ませんでしょうか。。
0889nobodyさん
2006/09/08(金) 23:11:11ID:???quotemetaと同じそうだ。
0890nobodyさん
2006/09/08(金) 23:13:20ID:???また、件数を割って得た数が割りきれなければ総ページ数を+1する
ってとこかなぁ
0892nobodyさん
2006/09/08(金) 23:44:38ID:???わざわざNon-parsed Headerする意図が(ry
0893886
2006/09/08(金) 23:55:47ID:d2vLYLwU>>890
ご意見、ありがとうございます。
Data::Pager
HTML::Pager
ですか。恥ずかしながら始めてしりました。
勉強してみます。
最初は自分でロジックを考えて実装しようと
思ったのですが、案外難しいな。。と。
検索対象を全部HTMLソースに
吐き出して、DHTML + javasript で
表示の切り替えが出来ないかな。。なんて
ことも考えてます。
Perl経験あんまり無いので、無理にperl
で作るとソースがむちゃくちゃになりそうで。。
なやましい。。
0894nobodyさん
2006/09/09(土) 01:22:33ID:???ちなみに、経験があるのは何なの?
0895nobodyさん
2006/09/09(土) 01:39:45ID:???たとえば
my $test = "soto";
my $a = 1;
if ($a) {
print $test;
}
とすればsotoが出力されますが、
my $test = "soto";
my $a = 1;
if ($a) {
my $test = "naka";
print $test;
}
print $test;
だとnakasotoと出力されます。
myはあるサブルーチンのなかのみでしか変数を使えないようにするというのが私の理解なのですが、
この場合はどういう処理がされているのでしょうか。
仮に{}でくくられた部分内でしか変数を使えなくするというのなら最初の例に合いませんし・・・
初歩的な事で申し訳ありません。
0896nobodyさん
2006/09/09(土) 03:06:29ID:FjbM6rE4$filename = "filename.dat";
chown www,GROUPNAME,"$filename";
としても反映されません。
ユーザ:root
グループ:wheel
でログインをした状態でコマンドラインから色々試してみたところ
自分自身のユーザ・グループ以外には変更できないのですが
www,GROUPNAME とするにはどのようにしたら良いのでしょうか。
0898nobodyさん
2006/09/09(土) 04:10:20ID:???uid, gidでやっても?
chown scalar(getpwnam('www')),scalar(getgrnam('GROUPNAME')),"$filename";
0900nobodyさん
2006/09/09(土) 04:59:01ID:???auでフォームから送信すると次のページのURLに
?x-up-destcharset=17
と付くんですがなぜですか?
また、これを表示させない方法があれば教えてください。
0902896
2006/09/09(土) 05:29:02ID:???で解決して喜んではいたのですが
ユーザ名,グループ名 では駄目だった理由が知りたくて
戻って参りました...どなたかお教えください。
perl chown で検索した解説サイトではほぼ全てが
「chown ユーザ名,グループ名,ファイル名」
という説明になっているということは一般的にはuid,gid形式では
指定しないのでしょうか。
環境はFreeBSD+perl5.8.8です。
0906nobodyさん
2006/09/09(土) 10:19:37ID:???まずperldocではちゃんと数値のUID,GIDと明言されてる。
そして、素人が作ったPerl解説サイトはデタラメ書いてる場合もある。
それはそうとして、どこでどう検索したのか書いてみろ。
yahooとgoogleで「perl chown」のTOP5件チェックしたが正しかったぞ。
0907895
2006/09/09(土) 10:32:15ID:???ありがとうございます。
ファイルスコープなるものとブロックスコープなるものがあったんですね。
>>901
名前は知りませんでしたが、myはブロックスコープで動くと思っていました。
後者の出力が正しいとするなら、
前者はブロックの外でmy宣言してるのにもかかわらず、
ifのブロック内で$testが出力されているのが不思議だったのです。
0908nobodyさん
2006/09/09(土) 11:39:12ID:???スコープがネストされてる場合内側から外側のスコープが見えるよ
他の言語でも言うグローバル変数はそういう使い方
0909895
2006/09/09(土) 13:05:50ID:???知りませんでした。ありがとうございます。
{
my $block;
{・・・・・・}
{
{・・・・・・}
}
}
などでも・・・・・・の位置から$blockをみれるということですか。
ということはサブルーチンに移るときだけ気をつければいいんですね。
0911nobodyさん
2006/09/09(土) 21:10:29ID:???0916nobodyさん
2006/09/09(土) 21:38:39ID:???local $Data::Dumper::Deparse = 42 ;
とかで必要すよ義務っすよ must っすよ。
0917nobodyさん
2006/09/09(土) 21:48:54ID:???ま た コ ン パ ク ト か
0918nobodyさん
2006/09/09(土) 22:11:50ID:???{
my $x = "soto_x ";
my $y = "soto_y ";
{
my $y = "naka_y ";
print "naka: ", $x, $y, "\n";
}
print "soto: ", $x, $y,"\n";
}
{
print "yoso: ", $x, $y, "\n";
}
ファイルスコープについては、この延長で「ファイルを丸ごと取り囲む見えないブロック」があると考えれ。
サブルーチンに移る時に何を気をつけるのかは知らんが。
0919895,907
2006/09/09(土) 22:28:45ID:???localは環境変数など複数あってはいけない変数に違う値を付ける場合に必要なんですね。
>>918
分かりやすい説明ありがとうございます。
サブルーチンに移るときに気をつけるというのは
引数を渡すのを忘れて、変数を直接参照しないように
ということです。言葉足らずですみませんでした。
0920nobodyさん
2006/09/09(土) 22:29:47ID:???他にも、こういう使い方とかってしないもんかね?
my $hoge = { fuga => 1, piyo => 2 };
{
local $hoge->{piyo} = 3;
print $hoge->{piyo};
}
print $hoge->{piyo};
0921nobodyさん
2006/09/09(土) 22:58:48ID:???必然性があるならやったらいい。
しかし設計としてはほめられたもんじゃない。
そこに合理性がない上に恥じらいもないなら、少なくとも僕はそれをクソと呼ぶ。
0922nobodyさん
2006/09/09(土) 23:09:18ID:???cpan Net::Amazon
すると
Undefined subroutine &main::UpdateHTML_blib called at -e line 1.
NMAKE : fatal error U1077: 'C:\Perl\bin\perl.exe' : リターン コード '0xff'
Stop.
nmake -- NOT OK
と出てインストールできません。どうしたらインストールできるでしょうか?
ズブの素人なのでなってない質問の仕方と思いますが、
神様達の優しさに期待します。よろしくお願いします。
0923nobodyさん
2006/09/10(日) 00:17:14ID:???もしくはppmにしておきなさい
わからなければ検索
0924nobodyさん
2006/09/10(日) 12:43:26ID:???print pack ("H*","$d16")
で、$d16のなかに00が含まれているとプリントがその手前までしかされません・・・
何が原因でしょうか?
0925nobodyさん
2006/09/10(日) 13:34:34ID:???どこにprintしてるのか知らんがnullは文字列の終端。
表示する端末によっては表示が打ち切られたり、半角スペースに置き換えられて続行したり…
バイナリエディタの右側の枠のようなものを作りたいの?
0926924
2006/09/10(日) 15:17:01ID:???はい。Perlで簡易バイナリエディタを実験的に作ってみようと思いまして・・・
00は違う値に置き換えてからprint表示する必要があるのですか。
ありがとうございます。
0927924
2006/09/10(日) 15:17:52ID:???print先はモニタです。
0928nobodyさん
2006/09/10(日) 16:54:55ID:???まあモニタなのは分かるけど…
nullに限らず各制御コードは何かに置換することでエスケープするのは必要だね。
手っ取り早いのは tr/ -~/./c (US-ASCII以外を置換)とかを通すこと。
マルチバイトに対応させるならもう二捻り。
0929nobodyさん
2006/09/10(日) 17:19:33ID:JN7kssrH一文字分タイプする労力減るだろ?とか悦に入ってんの?
elseif と else if で混乱してた方がまだマシ。泣きそう。
0932nobodyさん
2006/09/10(日) 18:45:21ID:???0933nobodyさん
2006/09/10(日) 22:10:15ID:us6Jx56Pprint <<EOF
ほげほげ\n
ほげほげ\n
.
.
.
EOF
で出力すると、当然
ほげほげ
ほげほげ
.
.
.
というテキストファイルが出来、出力させたい
ほげほげ\n
ほげほげ\n
.
.
.
というようなファイルを得ることが出来ません
どのようにすれば上記の望む出力結果を得ることが出来るのか教えていただけると幸いです。
0934nobodyさん
2006/09/10(日) 22:20:08ID:???EOF が付加されるってこと? EOF って付加されたっけ。
とりあえず binmode あたりを試してみては。
0935nobodyさん
2006/09/10(日) 22:22:03ID:???改行している時点で、(見えませんが)改行コードは入っています。
改行コードではなく、"¥n" という文字が表示されて欲しいなら、
print <<EOF;
ほげほげ¥¥n
ほげほげ¥¥n
EOF
とすれば良いでしょう。
0936nobodyさん
2006/09/10(日) 22:23:57ID:us6Jx56Pありがとうございます
エスケープを重ねるんですね
試してみます
0939nobodyさん
2006/09/10(日) 22:41:36ID:9Coln3UPすげー。初めて知った。
0940nobodyさん
2006/09/10(日) 22:58:04ID:???0941nobodyさん
2006/09/11(月) 01:05:25ID:???ソケットに繋いでGET送って、
@get = <SOCKET>;
をすると、ごく希にそこで止まってしまうので、
時間切れにさせるか、もっと安全に扱いたいんだけど、
どうするのが普通ですか?
0943nobodyさん
2006/09/11(月) 01:39:19ID:???さくっとぐぐってみたら、
> タイムアウト処理ではシグナルを使うため、Windows 系サーバでは使えません。
という記述を見かけたのですが、windowsのActivePerlでは無理ですか?
0944nobodyさん
2006/09/11(月) 01:52:52ID:???0945nobodyさん
2006/09/11(月) 02:06:35ID:???0946nobodyさん
2006/09/11(月) 02:09:00ID:???The Unsupported function alarm function is unimplemented at 〜
というエラーになってしまいました
代案は何かありませんか?
0947nobodyさん
2006/09/11(月) 04:52:42ID:???携帯用の掲示板でアンカーを付けたいんですがこれだとURLが
〜〜.cgi?mode=view&No=>>番号
みたいに番号に>>が入ってしまうんですが数字のみにするには
どうしたらいいですか?
0948nobodyさん
2006/09/11(月) 05:01:11ID:???すみませんこうでした
0949nobodyさん
2006/09/11(月) 05:37:20ID:???[>>] の箇所、[] の使い方を誤解していると思われ。
正しくない正規表現からでマッチさせるべきテキストの例もないので
希望にそうか分からないが、一例を。
s/>>(\d+)/>><a href="〜〜.cgi?mode=view&No=$1">$1<\/a>/g;
0950946
2006/09/11(月) 23:55:32ID:???でも、肝心のアラームが作動してくれません
ttp://www.futomi.com/lecture/signal/alrm.html
このあたりを丸コピーしたのですが、
alarm 10;
@get = <SOCKET>;
alarm 0;
という部分でやっぱり止まります
一まとまりの処理の間でしか時間を見てないんじゃないかと思うのですが、
回避する方法はありますか?
0951nobodyさん
2006/09/12(火) 00:15:09ID:???@get = <SOCKET>;
の部分を、
for (1..100) { print "$_\n"; sleep(1) }
とかに置き換えれば、それはちゃんとタイムアウトします
0952nobodyさん
2006/09/12(火) 00:39:45ID:???0953nobodyさん
2006/09/12(火) 01:25:51ID:???ちょっと理解を超えてるので、
@get = <SOCKET>;
と同等のことをしてくれるタイムアウト処理内蔵の安全なパッケージとか
無いでしょうか
0954nobodyさん
2006/09/12(火) 04:41:17ID:???0955nobodyさん
2006/09/12(火) 12:24:04ID:???ActivePerlでwebから何か読もうとする人はみんな同じ問題を
抱える筈なのに、あんまり困ってないのは、
windowsでそんなことする人がいないということなのかな
0956nobodyさん
2006/09/12(火) 12:39:47ID:???0957nobodyさん
2006/09/12(火) 13:15:50ID:???0958nobodyさん
2006/09/12(火) 21:02:42ID:???> windowsでそんなことする人がいないということなのかな
Web から何か読もうとすれば、誰もが LWP を使うからだと思うよ。
0959nobodyさん
2006/09/12(火) 21:45:18ID:???誰もがということにしたい?w
0961nobodyさん
2006/09/12(火) 22:38:52ID:???0962nobodyさん
2006/09/12(火) 22:41:32ID:???あーあとLWP知らない人(笑)
0963nobodyさん
2006/09/12(火) 23:16:43ID:???せめて LWP が何であるかくらいは調べてよぅ。
たぶんあなたの手元に POD 内臓のソースが転がってるはずだから。
0965nobodyさん
2006/09/13(水) 00:45:01ID:???0966nobodyさん
2006/09/13(水) 00:57:01ID:???一日動かしてみてどうなるか
0967nobodyさん
2006/09/13(水) 03:07:31ID:???0968nobodyさん
2006/09/13(水) 21:40:08ID:???残念ながら「ActivePerlでwebから何か読もうとする」という目的が明らかになったのは >>955 の時点なのですよ。
>>966
LWP::UserAgent を使いませんか。タイムアウト処理が欲しいのでしょう?
0969nobodyさん
2006/09/13(水) 23:09:53ID:???POSTする必要もあるので、GETだけLWP使うのも変だし、書き直します
0970nobodyさん
2006/09/14(木) 04:13:24ID:???0971nobodyさん
2006/09/14(木) 06:58:33ID:???0973nobodyさん
2006/09/14(木) 11:55:45ID:???0974nobodyさん
2006/09/14(木) 16:13:18ID:CaEHA0hfどうやればいいのでしょうか?
たとえば文字列"coding"にはマッチしませんが"コーディング"にはマッチする
というような奴です。
0975nobodyさん
2006/09/14(木) 16:20:33ID:???0976nobodyさん
2006/09/14(木) 16:20:44ID:???0977nobodyさん
2006/09/14(木) 16:28:49ID:???0978nobodyさん
2006/09/14(木) 16:43:31ID:???別に7Fでもいいけど。
0980nobodyさん
2006/09/14(木) 20:12:42ID:5VQgHCQX掲示板で検索フォームを作ってます
検索文字列を全角スペースで区切ると上手くヒットしません・・・
$key_wordはちゃんと区切り文字(半角または全角スペース)で分割されてると表示れるのですが
$key_word =~ s/ / /g;
$key_word =~ s/\t/ /g;
@words = split(/ /,$key_word);
↑これ間違ってますでしょうか?
0981nobodyさん
2006/09/14(木) 20:47:10ID:???じゃだめなん?
0982nobodyさん
2006/09/14(木) 20:53:52ID:???0984nobodyさん
2006/09/14(木) 21:04:27ID:???0986nobodyさん
2006/09/14(木) 21:14:21ID:???0988980
2006/09/14(木) 22:24:36ID:???&jcode'convert(*key_word, "sjis");
これ入れてもダメでした・・・
もっとヒント下さい^^;
0989nobodyさん
2006/09/14(木) 23:57:45ID:???$baka =~ s/\t+/\s/g;
@aho = split(/\s/,$baka);
0991nobodyさん
2006/09/15(金) 00:19:23ID:???OSやインタプリタのバージョン、コードの内容からも
ある程度個人の特定が可能です。質問の際にはなるべく
最小限のコードだけを提示して、回答を貰えばラッキーというスタンスで臨みましょう。
0994980
2006/09/15(金) 02:03:11ID:???検索ルーチンのミスでした><
0995nobodyさん
2006/09/15(金) 05:01:24ID:EabJRhNL0996nobodyさん
2006/09/15(金) 05:30:27ID:???0997nobodyさん
2006/09/15(金) 08:29:43ID:MgHy280R0998nobodyさん
2006/09/15(金) 10:34:31ID:???前スレだけあればおk
1000ならディレクターがちゃんと仕事をする
1000nobodyさん
2006/09/15(金) 13:18:45ID:???おしまい
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。