Perlについての質問箱 27箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/09/10(日) 16:50:14"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html
● 2006/09/10現在の最新版: 5.8.8
● 2006/09/10現在の開発版: 5.9.3
前スレ
Perlについての質問箱 26箱目
http://pc8.2ch.net/test/read.cgi/tech/1153412251/
リンク集は>>2-3
過去スレは>>4
0002デフォルトの名無しさん
2006/09/10(日) 16:51:01Perlプログラミング講座: 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/
0003デフォルトの名無しさん
2006/09/10(日) 16:52:29CPAN.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
0004デフォルトの名無しさん
2006/09/10(日) 16:53:141 ttp://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 ttp://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 ttp://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 ttp://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 ttp://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 ttp://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 ttp://pc2.2ch.net/test/read.cgi/tech/1068051036/
8 ttp://pc2.2ch.net/test/read.cgi/tech/1074151549/
9 ttp://pc5.2ch.net/test/read.cgi/tech/1079114157/
10 ttp://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 ttp://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 ttp://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 ttp://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 ttp://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 ttp://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 ttp://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 ttp://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 ttp://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 ttp://pc8.2ch.net/test/read.cgi/tech/1131286411/
21 ttp://pc8.2ch.net/test/read.cgi/tech/1134327348/
22 ttp://pc8.2ch.net/test/read.cgi/tech/1138519327/
23 ttp://pc8.2ch.net/test/read.cgi/tech/1141742901/
24 ttp://pc8.2ch.net/test/read.cgi/tech/1146022352/
25 ttp://pc8.2ch.net/test/read.cgi/tech/1149259409/
26 ttp://pc8.2ch.net/test/read.cgi/tech/1153412251/
スレタイを見ただけでほすほすしてしまった
このスレは間違いなく伸びる
( ´∀`)
_(__つ/ ̄ ̄ ̄/_
\/ /
 ̄ ̄ ̄
0006デフォルトの名無しさん
2006/09/10(日) 22:02:110007デフォルトの名無しさん
2006/09/10(日) 23:49:390008デフォルトの名無しさん
2006/09/10(日) 23:52:59となっていて、1足すと
07:00になってくれたら時刻の計算が便利なんだけど
perlではこういうのモジュールとかありますか?
0009デフォルトの名無しさん
2006/09/11(月) 00:24:13これの意味がわかりません
実行可能なのですか?
0010デフォルトの名無しさん
2006/09/11(月) 00:24:48うるう秒の存在を考えたことはあるか?
0011デフォルトの名無しさん
2006/09/11(月) 00:34:59Date::Timeとか?
0012デフォルトの名無しさん
2006/09/11(月) 00:46:54$time += 1;
print $time; ==> 7:00
みたいな感じ?確かに便利そうだなぁ。ちゃんと演算子のオーバーロードもやってもらわんとね。
0013デフォルトの名無しさん
2006/09/11(月) 03:33:50つ Time::Piece
0014デフォルトの名無しさん
2006/09/11(月) 04:08:030015デフォルトの名無しさん
2006/09/11(月) 11:05:50コードを Readonly 化しようぜ
0016デフォルトの名無しさん
2006/09/11(月) 11:19:44まさかTime::Pieceのことじゃないよね?
0017デフォルトの名無しさん
2006/09/11(月) 11:37:07初心者向けの練習問題になるんじゃないの?
0018デフォルトの名無しさん
2006/09/11(月) 14:10:26動かなかったりしますが具体的にはどういった内容で動かないのでしょうか?
0019デフォルトの名無しさん
2006/09/11(月) 15:25:49外部データの例(gaibu.dat)
aaa
bbbb
cc
…(続く)
openで開いて入れると,配列としては入りませんよね?
0020デフォルトの名無しさん
2006/09/11(月) 15:30:120021デフォルトの名無しさん
2006/09/11(月) 15:39:31while(<IN>){
chomp;
push(@arr, $_);
}
close(IN);
0022デフォルトの名無しさん
2006/09/11(月) 15:55:46my @a = map {$_ =~/(.*)$/} <$in>
0023デフォルトの名無しさん
2006/09/11(月) 16:02:13@gaibu = <IN>;
close(IN);
0024デフォルトの名無しさん
2006/09/11(月) 16:24:35use File::Slurp;
my @lines = read_file('gaibu.dat');
002519
2006/09/11(月) 16:47:37ありがとうございました。
その方法で無事解決しました。
色々調べて,関数はないだろうという結論でしたが,
最後の判定をどうするかでいい方法が思い浮かびませんでした。
while(<IN>){
こういう判定の仕方がどうにも慣れないというか思いつかないというか・・・。
ちなみに,23の方法は最初自分が試した方法なんですが,
これだとデータファイルがそのまま放り込まれてしまって,
配列1つずつに入れるということにならなくて困っていました。
アドバイスくれた方々,ありがとうございました。
0026デフォルトの名無しさん
2006/09/11(月) 21:12:18open(IN, 'gaibu.dat');
@array = map{ chomp; $_} <IN>;
0027デフォルトの名無しさん
2006/09/11(月) 22:30:40一回で配列の中身全部処理してくれるよ
0028デフォルトの名無しさん
2006/09/12(火) 09:39:24995 :デフォルトの名無しさん :2006/09/10(日) 15:47:32
独習perlで勉強してる。
-----------------------------------------------
$ cat print.pl
print '\\\\';
-----------------------------------------------
上記のたった一行のスクリプトを実行すると、
$ perl print.pl
\\
となってしまう。
独習perlには「シングルクォート間にある文字列はエスケープシーケンスを無視する」
と書いてあるのに、なんでこんな結果になるんだろう。
FreeBSD6.1、Cygwin環境下両方で試したけど同じ。
996 :デフォルトの名無しさん :2006/09/10(日) 15:55:24
「初めてのperl」を見たら、2.3.1節に、
シングルクォートの間に置かれたすべての文字(ただしシングルクォートと逆スラッシュは除く)が、
そのまま文字列の内容になります。
って書いてあるよ。
0029デフォルトの名無しさん
2006/09/12(火) 14:47:35シングルクォートと逆スラッシュは例外。
0030デフォルトの名無しさん
2006/09/12(火) 15:11:100031デフォルトの名無しさん
2006/09/12(火) 15:41:35と、言いたかったのだろう。
0032デフォルトの名無しさん
2006/09/12(火) 16:10:14Perlでどうやってツール作るんだろう。
パケット監視する方法とかあるんですか?
0033デフォルトの名無しさん
2006/09/12(火) 17:21:080034デフォルトの名無しさん
2006/09/12(火) 19:55:03>データ処理用のパソコン等で使用される事が多い「Perl(プログラム
>言語)」プログラムが、
個人のPerl使い=希少種
0035デフォルトの名無しさん
2006/09/12(火) 21:06:240036デフォルトの名無しさん
2006/09/12(火) 21:41:480037デフォルトの名無しさん
2006/09/12(火) 22:17:040038デフォルトの名無しさん
2006/09/12(火) 22:33:39マゾだな…。せめてC++ならわかるが。
0039デフォルトの名無しさん
2006/09/12(火) 23:00:40Perlが駄目ならRubyとかで作るとかpugsで動かしちゃうとかいろいろ出来るようなきもするけど。
0040デフォルトの名無しさん
2006/09/12(火) 23:04:38/.参照。dllを監視しているらしい。まぁ、ROやらない俺には全く関係ないがなー。
0041デフォルトの名無しさん
2006/09/13(水) 00:20:40あれがそう。
0042デフォルトの名無しさん
2006/09/13(水) 07:09:11よくわからんけど、ここで質問に答えてるような連中には、
良い小遣い稼ぎのネタがあるってことか。
でもゲーム嫌いだからなあ。
0043デフォルトの名無しさん
2006/09/13(水) 08:40:23そういう汚いお金を稼ごうと思う人はレベルの高い人にはあまりいないと思われ。
いてもスクリプトキディレベルの人かな。
0044デフォルトの名無しさん
2006/09/13(水) 09:03:51運営会社は「不正」だと言ってるが、倫理的に何が悪いのかおれにはわからない。
あー、でもくだらない質問でスレが埋まるのはいやだから、
「他人がいやがる用途に関する質問はお断り」とでもしといたほうがいいのかな?
0045デフォルトの名無しさん
2006/09/13(水) 09:27:48> よくわからんけど、ここで質問に答えてるような連中には、
> 良い小遣い稼ぎのネタがあるってことか。
莫大な財産を築けるネタじゃねえの?
004643
2006/09/13(水) 09:33:30たしかに、悪いとは言い切れないね。賛否両論あるだろうが。
「汚いお金」とは言いすぎだった。
スパムメールで稼ぐことなどの迷惑行為を連想してしまっていたようだ。
スレ違いの内容失礼。
0047デフォルトの名無しさん
2006/09/13(水) 19:29:340048デフォルトの名無しさん
2006/09/14(木) 09:01:34ただし法律では禁止されてないからアカウントBANで終わる。
詳しい話は ttp://blog.livedoor.jp/botbokumetu/ とかで。
0049デフォルトの名無しさん
2006/09/14(木) 09:37:42あれに「バイナリファイルの送信」っていう機能があって、
目的の装置にtelnetしてから、よく任意のバイナリファイル(バイナリエディタで作ったファイル)
を送信している。
これをperlでやるにはどうしたらいいのだろう。っていうかshellの機能の話しになるんだろうかこれ。
0050デフォルトの名無しさん
2006/09/14(木) 10:44:13「これ」って具体的になによ? ファイル送信の方法なら山ほどあるぜ。
0051デフォルトの名無しさん
2006/09/14(木) 12:26:33telnetのプロトコルでperlを使ってファイル転送に意義を感じないけど
上の条件で縛るならNet::Telnetがあるべ
http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm
telnetにこだわらないならFTPやSSHなども
http://search.cpan.org/~gbarr/libnet-1.19/Net/FTP.pm
http://search.cpan.org/~ivan/Net-SSH-0.08/SSH.pm
http://search.cpan.org/~dbrobins/Net-SSH2-0.08/lib/Net/SSH2.pm
つか質問する前にCPANとかでモジュールないかぐらい調べる癖つけれ
0052デフォルトの名無しさん
2006/09/15(金) 00:45:15$b = sprintf("%04d",$a);
上記のようにすると、
$a = 1 なら $b = 0001 となりますが、
$a = -1 だと $b = -001となってしまいます。
$b = -0001とするには、どのようにすれば、
よろしいでしょうか?
条件分岐で、マイナスなら、%05dとかでしょうか、
もっとスマートな方法はありませんでしょうか?
ご教授下さい。
お願いします。
0053デフォルトの名無しさん
2006/09/15(金) 00:56:190054デフォルトの名無しさん
2006/09/15(金) 01:25:16$a =~ s/^(-)//; # +記号も対応するなら ([-+])
$b = $1 . sprintf("%04d",$a);
0055デフォルトの名無しさん
2006/09/15(金) 01:30:05$b = sprintf(($a > 0 ? "%04d" : "%05d"), $a);
005652
2006/09/15(金) 01:59:09いろいろとレス
ありがとうございます。
条件分岐でいきます。
0057デフォルトの名無しさん
2006/09/15(金) 02:07:46>>53-55
m9(^Д^)プギャー
0058デフォルトの名無しさん
2006/09/15(金) 02:57:57初心者は回答しないでくれるかな?
0059デフォルトの名無しさん
2006/09/15(金) 03:10:56寒いね
0060デフォルトの名無しさん
2006/09/15(金) 03:19:35うん、すまない。
0061デフォルトの名無しさん
2006/09/15(金) 05:23:25perldoc -f sprintf
質問者やここの住人の大半はドキュメント読んだり
CPANでモジュール無いか調べたり出来んのか?
0062デフォルトの名無しさん
2006/09/15(金) 06:21:550063デフォルトの名無しさん
2006/09/15(金) 07:23:490064デフォルトの名無しさん
2006/09/15(金) 15:49:49そもそもの間違いだろうな。
0065デフォルトの名無しさん
2006/09/15(金) 16:28:160066デフォルトの名無しさん
2006/09/15(金) 16:47:16リアルでストレス溜まってるんだろうな。
0067デフォルトの名無しさん
2006/09/15(金) 17:25:51abc_DATA
def_DATA
GHI_DATA
zyx_DATA
というフォルダがあります、これらのフォルダ名を
abc_Win2k
def_Win2k
GHI_Win2k
zyx_Win2k
とリネームしたいのですが、どうしたら良いでしょう?
$foo = *. '_DATA';
$bar = *. '_Win2k';
print "[$foo]を[$bar]に変換します。\n";
rename $foo, $bar;
これじゃぁできないのですが・・・・
map { $x = $_; $x =~ s/DATA$/Win2k/; rename($_, $x); } glob("*_DATA");
0070デフォルトの名無しさん
2006/09/15(金) 18:32:44サンクス
天才です
0071デフォルトの名無しさん
2006/09/15(金) 19:39:451: CGIで自サイト内のHTMLを検索するプログラムを作りますた。
2: ところが、ディレクトリとかファイルとか全部調べるととっても時間がかかって問題となりますた。
3: と言うことで、1回調べたディレクトリやファイルのパスは、txtファイルに保存して次回からそれを読み込むことにしました。
4: ところが、新規でファイルやディレクトリを増やすと、プログラムがそれに気付かない罠に陥りました。
(僕のプログラムは頭が弱いのでtxtに書いてあるパスが全てだと信じきっている。)
5: しょうがないので、毎回ディレクトリやファイルの構造をチェックしてみました。
6: そうすると、振り出しに戻った上、txtファイルが何の意味もない事件に陥りました。
7: どうすればいいですか?(サクサク大量のディレクトリやファイルを検索できれば問題解決です)。
0072デフォルトの名無しさん
2006/09/15(金) 19:48:33ここらへんのをダウンロードして中身を見てみればいいんじゃないかな
俺は見てないからほんとに解決するかは知らないけど
0073デフォルトの名無しさん
2006/09/15(金) 20:28:07そもそもHTMLを直にアップロードするのをやめてCMSを使うとか
いっそのことGoogle先生に頼ってみるとか
0074デフォルトの名無しさん
2006/09/15(金) 20:49:170075デフォルトの名無しさん
2006/09/15(金) 21:21:45検索CGIの紹介文ですね。
せっかくなんで、全部ベンチ取ってみよう。
>>73
えーー。
なんかもっとこのスレっぽい回答ほしいです。
>>74
ファイル内の文字も検索してるけど、これもこれでとっても時間かかるます。
と言うか、自分のマシンじゃないからアレなんだけど、きっとCPUが低いんだよ。たしか800MHzって言ってた気がする。
CGIってあれじゃん、検索ボタン押して3秒以上経過するとアレじゃん。ヤじゃん。
--------------------------
と言うかファイルのアップなんてそんな頻繁にやってないのに、毎回ディレクトリ構造チェックするのヤなんだよ。
だからと言って、ファイルやディレクトリを増やした時に即座に反映されないのもヤなんだよ。
そして、この仕様(希望)を満たすプログラムを作りたいんだよ。
書いてて思ったけどなんか無理っぽい要求ですね。コレ。
しょうがないので、たぶんどっかで妥協したりします。
超妥協したらGoogle先生呼び出します。
てか今思ったけどGoogle先生早くね??なにアレ。
0076デフォルトの名無しさん
2006/09/15(金) 21:40:09grepでやったら1秒とかからずに終わった件
マルチスレッドでも使ってるのかこれ?
0077デフォルトの名無しさん
2006/09/15(金) 21:44:04「構造テキスト読み込み+解析+記録されてるパスをそれぞれ検索」と
「ディレクトリ列挙+ファイル列挙しつつ検索」では、あんまかわらないような。試してはないけど。
検索部分(ファイルの読み込み+検索)のアルゴリズムを見直したほうが良いと思うよ。
検索の助けになるようなインデックスファイルを作るとかね。
0078デフォルトの名無しさん
2006/09/15(金) 21:49:46ファイルアップロード時にインデックスをキャッシュするアップローダーを書いてみてはいかが。
0079デフォルトの名無しさん
2006/09/15(金) 22:02:200080デフォルトの名無しさん
2006/09/15(金) 22:58:10構造っていうか、HTML一つにつきPathを一つ作りますた。上から順番に開いていくだけです。
>検索の助けになるようなインデックスファイルを作るとかね。
インデックスファイルってなんですか。どのような装置ですか。
>ファイルアップロード時にインデックスをキャッシュするアップローダーを書いてみてはいかが。
よくわからんけど、ようするに、FTPくそくらえ!検索プログラムに暗黙でファイルをいじるな!ってコトですね!
0081デフォルトの名無しさん
2006/09/15(金) 22:59:13プログラム部は書き間違えがなければこんな感じです。数年この状態のまま使ってます。
再帰してるけど、再帰のほうがあとでなんかあったとき、いじりやすそうだったからです。
個別に処理をしてるのも同じ理由です。あとは、見た目が綺麗とかそんな理由。
BEGIN {
#▼なんかディレクトリからファイルを返す関数
sub file_list (&$;$) {
my ($code, $dir_name, $mode) = ($_[0], $_[1], $_[2]);
my $path;
{
$path = $dir_name . q[./], last if(qq[\l$mode] eq q[p] or !$mode);
$path = "", last if(qq[\l$mode] eq q[f]);
return(); #モードが変なのは処理しない。
}
opendir DIR, $dir_name or return ();
my @file_list = grep{ $_ = $path . $_; &$code; } (readdir DIR);
closedir DIR;
foreach my $file (@file_list){ 1 while($file =~ s[/\./][/]g) }
return(@file_list);
}
}
0082デフォルトの名無しさん
2006/09/15(金) 23:00:26INIT {
#▼対象ディレクトリ全取得みたいな。
$::routine{'ディレクトリ取得'} = sub {
my @read_dir = @_ or return( undef, '読み込むべきDirPath が入力されていません。' );
my @return_dir; #返す値
&{ my $sub; $sub = sub{
foreach my $dir ( @{ shift; } ){
my @list = map {$_ . '/'} file_list { -d and !(m/[\/\.]+$/) } $dir;
push @return_dir, @list;
$sub->( [@list] ) if(@list); #ディレクトリがまだあったら再帰
}
}}( [@read_dir] );
return(@return_dir);
};
}
#▼Path取得
{
my @all_dir;
#▽Dir
@all_dir = $::routine{'ディレクトリ取得'}->($::info{'path'});
defined($all_dir[0]) or error($all_dir[1]); #エラー処理しと
#▽html
foreach my $dir_path (@all_dir){
$::all_path{"$dir_path"} = [ file_list {-f and (m/\.html$/ or m/\.htm$/) } $dir_path ];
}
}
0083デフォルトの名無しさん
2006/09/15(金) 23:03:45と言うか直す余地が満載なので直します。
0084デフォルトの名無しさん
2006/09/15(金) 23:28:240085デフォルトの名無しさん
2006/09/15(金) 23:38:33とりあえず「全文検索」で検索すればインデックスの件を含め色々出てくる。
ていうかそのキモいコーディング直すだけで保守性も速度も上がりそう。
0086デフォルトの名無しさん
2006/09/16(土) 00:35:24確かこんな感じだった。
普通、インデックスを使った検索ってのは辞書が必要になる。
でも辞書とか形態素解析とかは面倒くさい!><
そこで、辞書に登録された単語毎にファイルを引けるようにするのではなく、
nバイト毎のハッシュを単語代わりに使う。検索するときも、検索ワードのハッシュを取って、インデックスから引けば
実際に開いてマッチングする必要のあるファイルや部分は大幅に減る。
これならPerlなら簡単に書けそうだし、イイと思うよ。
0087デフォルトの名無しさん
2006/09/16(土) 00:42:090088デフォルトの名無しさん
2006/09/16(土) 00:46:22レスすんなカス
0090デフォルトの名無しさん
2006/09/16(土) 06:08:410091デフォルトの名無しさん
2006/09/16(土) 10:07:27元ネタと多少違ってたとしても、この方法でいけるじゃん。
まさかハッシュをPerlの連想配列とでも勘違い(ry
0092デフォルトの名無しさん
2006/09/16(土) 10:13:000093デフォルトの名無しさん
2006/09/16(土) 10:32:33もしそうしたいならざっとこんな感じか。
・File::Findでサブディレクトリを含むエントリをスキャンする
・ファイルが見つかったらstatで更新日時を調べる
・キャッシュに対象ファイルのエントリがあるか調べる。キャッシュした時刻がファイルより古ければ無視する。
・キャッシュを利用できる場合はそうする。
・利用できない場合、よくわからんが好きなようにファイルから検索する。
・検索結果をキャッシュに記録する。最終検索日時も記録しておく。
キャッシュの構造や 具体的にどんな検索をしたいのかとかは知らんが
何らかのデータベースシステムを使った方が明らかに速いだろうな。
0094デフォルトの名無しさん
2006/09/16(土) 11:05:43既存ファイルの更新方法による。
0095デフォルトの名無しさん
2006/09/16(土) 11:42:35中身の無い批判してんなよ。何が目的なんだ?
0096デフォルトの名無しさん
2006/09/16(土) 13:23:59そういう亀レスが一番「効いてます」って証だけどね。
0097デフォルトの名無しさん
2006/09/16(土) 21:29:290098デフォルトの名無しさん
2006/09/16(土) 21:30:12泣くな。
0099デフォルトの名無しさん
2006/09/17(日) 06:53:210100デフォルトの名無しさん
2006/09/17(日) 10:44:36This is perl, v5.8.8 built for MSWin32-x86-multi-thread
こんにちは。
LWPモジュールを用い、htmlソースを取得したいのですが、amazon.co.jpの商品のページから取得ができません。
#! /usr/bin/perl
use LWP::Simple;
my $url = "http://www.amazon.co.jp";
my $content = get($url);
print $content;
exit(0);
上のプラグラムだと正常に取得してくるのですが、
http://www.amazon.co.jp/gp/offer-listing/4757410549/ref=dp_olp_2/503-3784903-9803115?ie=UTF8
だと取得できないです。
どうか、わかる方お願いします。
0101デフォルトの名無しさん
2006/09/17(日) 11:21:28#!/usr/bin/perl
use LWP::Simple qw(:DEFAULT $ua);
$ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
my $url = "http://www.amazon.co.jp/gp/offer-listing/4757410549/ref=dp_olp_2/503-3784903-9803115?ie=UTF8";
my $content = get($url);
print $content;
0102デフォルトの名無しさん
2006/09/17(日) 11:23:06#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
my $url = "http://www.amazon.co.jp/gp/offer-listing/4757410549/ref=dp_olp_2/503-3784903-9803115?ie=UTF8";
my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
my $res = $ua->get($url);
print $res->content if $res->is_success;
0104デフォルトの名無しさん
2006/09/17(日) 16:13:120105デフォルトの名無しさん
2006/09/17(日) 16:28:19ourやlocalを使うのはそうする必要がある場合だけ。
くすくす
0107デフォルトの名無しさん
2006/09/17(日) 18:06:30釣れた釣れたw
俺の完全勝利wwwwっwww
このレスに反応したらさらに俺に加点なwwwwww
でもお前らは悔しすぎて自分を抑えられずこのレスに反応するww
もう勝ちすぎてこわいwwっwwwwwwwwwっwww
0108デフォルトの名無しさん
2006/09/17(日) 18:14:350110デフォルトの名無しさん
2006/09/17(日) 18:52:150111デフォルトの名無しさん
2006/09/17(日) 19:07:34それを先に言ってほしかった。
「使い捨てのスクリプトまでstrict/warnings/myやる奴の気が知れん」
↓
「いや、use strictはどんなスクリプトでも使うべき。付けないやつはアフォ」
↓
「うっせぇ!!strict厨、warnings厨、my厨、死ね」
これなら納得。
0112デフォルトの名無しさん
2006/09/17(日) 19:13:55「いや、use strictはどんなスクリプトでも使うべき。付けないやつはアフォ」
と言ってるのに相当するわけだが
0113デフォルトの名無しさん
2006/09/17(日) 19:19:350114デフォルトの名無しさん
2006/09/17(日) 19:27:270115デフォルトの名無しさん
2006/09/17(日) 19:29:240116デフォルトの名無しさん
2006/09/17(日) 19:33:11もはや原理主義と言ってもいい
危険だから下手に触らない方がいいよ
0117デフォルトの名無しさん
2006/09/17(日) 20:27:520118100
2006/09/17(日) 20:30:480119デフォルトの名無しさん
2006/09/17(日) 21:34:47>>103
0120デフォルトの名無しさん
2006/09/17(日) 21:56:49てか、書き捨ての時と普通に書くときで、書き方変えられる人は器用だと思う。素直に感心。
0121デフォルトの名無しさん
2006/09/17(日) 22:13:03ファイルに起こす程の分量になると僕には複雑すぎるので、それらなしでは混乱して発作を起こしてしまうから。
0122デフォルトの名無しさん
2006/09/17(日) 22:46:03共同作業とか職場が一緒でなければつけてない人を見かけても無視だけど
>>112,>>116みたいなのは真性のアフォを見ちまったと思って胸糞悪くなる。
0123デフォルトの名無しさん
2006/09/17(日) 22:50:45自分の考えを押し付けるヤツがアホってだけで。
0124デフォルトの名無しさん
2006/09/17(日) 23:15:14使い捨てなんだから自分の書きやすいように書けばいい話。
0125デフォルトの名無しさん
2006/09/17(日) 23:23:23「ほっとけ、それがそいつにとって良い書き方なんだろう」っていう捨て置き方が
常に問題なく成り立つとは限らないんだよね。
でも、そういう馬鹿に限って「より良い何かに変わろうとする力と意志」がないもんだから、
ちょっと意見をぶつけられただけですぐ「押し付けられたヨ〜」っていう電波被害届出すし。
0126デフォルトの名無しさん
2006/09/17(日) 23:52:28strictとwarningを付け足すことが>>100の質問内容とどんな関係があるのかさっぱりわかんないんだよね
誰か偉い人教えてくれ
0127デフォルトの名無しさん
2006/09/18(月) 00:00:45アフォに物を教えるのってものすごーく面倒だから。
だからまともな頭の持ち主は「アフォな俺に教えて」という言い方はしない。
それがどれだけ傲慢で無駄なオネガイががわかるからね。
これを言ってしまうのは、それすらわからない本当にアフォな奴だけ。
そしてそれがバレちゃったらもう、誰もまともには答えてくれない。
残念だったね。まずは自力でアフォじゃない人間になりなさい。
0128デフォルトの名無しさん
2006/09/18(月) 00:07:53普段書いているコーディングスタイルでサンプルを提示しただけのを
何か特別な意味があると勘違いしているのが真性のアフォのゆえんなんだろうな
0129デフォルトの名無しさん
2006/09/18(月) 00:18:070130デフォルトの名無しさん
2006/09/18(月) 00:18:24アンチな奴らには何言っても無駄よ。
サンプルを提示されただけでこう書けと押し付けられたわけでもないのに
アレルギー反応を示してるだけよ。
うざいけど、可哀想な奴らなので生あたたかく見守ってあげて下さい。
0131デフォルトの名無しさん
2006/09/18(月) 00:20:40自分のスタイルとか必要ない部分は極力減らすべきじゃないのか?
0132デフォルトの名無しさん
2006/09/18(月) 00:22:580133デフォルトの名無しさん
2006/09/18(月) 00:23:260134デフォルトの名無しさん
2006/09/18(月) 00:28:520135デフォルトの名無しさん
2006/09/18(月) 00:29:19宗教的な理由でどんな状況でも書かずにはいられませんごめんなさい
って言えないんだろ
0136デフォルトの名無しさん
2006/09/18(月) 00:31:250137デフォルトの名無しさん
2006/09/18(月) 00:35:20処置なしだな。。。
0138デフォルトの名無しさん
2006/09/18(月) 00:35:23文字通り「アフォ」だからだと思うよ。
まぁ、他人に歯軋りさせてナンボなはずの煽りで
他ならぬ自分の歯軋りを聞かせちゃってるザマじゃ、まるでダメだけどね。
0139デフォルトの名無しさん
2006/09/18(月) 00:39:02Perlなんだから可変変数やグロブ使いまくって変態コード書くのが楽しいんじゃん。
もちろん俺はそんなことしないよ☆
0140デフォルトの名無しさん
2006/09/18(月) 00:42:14流れを見ると100の質問に101と102が回答して
102のコードにstrictが入ってることにアンチstrictな人が反応して
strictいらねぇだろと102の書き方にケチをつけたのが事の発端ですよね。
とりあえずアンチstrict厨な方々はもちつかれてはいかがでしょうか。
コードの書き方は人それぞれなのですから気に入らなければ流せばいいではないですか。
それができないからアフォ呼ばわりされるのでは?
0141デフォルトの名無しさん
2006/09/18(月) 00:43:30回答は本質部分を分かりやすく書くのが基本。
必ずしも実装時の理想的な記述がよいわけではない。
(例はラクダ本等を参照)
本質でないところでごちゃごちゃ騒ぐな。
0142デフォルトの名無しさん
2006/09/18(月) 00:46:030143デフォルトの名無しさん
2006/09/18(月) 00:46:560144デフォルトの名無しさん
2006/09/18(月) 00:48:46本質でないところでごちゃごちゃ騒ぐな。
0145デフォルトの名無しさん
2006/09/18(月) 00:49:220146デフォルトの名無しさん
2006/09/18(月) 00:49:560147デフォルトの名無しさん
2006/09/18(月) 00:52:55有名どころの本の名前を出して自分の主張を押し通そうとしたのに
通らないと逆切れですか。
さすがはアフォだ。
0148デフォルトの名無しさん
2006/09/18(月) 01:46:570149デフォルトの名無しさん
2006/09/18(月) 03:19:3530-current_exec.t の43行目の生成したexeファイル実行時で
cygwin1.dllがみつからないと怒られてtest失敗しちゃいます。
ぐぐりまくったけど、よくわからんです。どうすりゃいいですか?
ちなみにshell scriptに組み込んでperl使いたいのでactive perlは抜きで
おながいします。
0150番組の途中ですが名無しです
2006/09/18(月) 11:55:090151デフォルトの名無しさん
2006/09/18(月) 13:34:57もしかして、わざわざ名前入力してるの? それなんて初心者?
0152デフォルトの名無しさん
2006/09/18(月) 13:50:34人のコードにケチをつけ原理主義呼ばわりしてスレを荒らす
アンチの馬鹿っぷりがおもしれぇ
0153デフォルトの名無しさん
2006/09/18(月) 15:16:04節穴にビビってるニュー速厨は放置
0154デフォルトの名無しさん
2006/09/18(月) 15:53:55もしかして、最近プロではない人がどんどん流れ込んできてるんですか。
web板のCGI始めちゃったー♪ってノリと同じですか。
0155デフォルトの名無しさん
2006/09/18(月) 16:47:37誰もちゃんと答えてくれないと思うよ。
既出だけど、アフォは相手にされない。
0156デフォルトの名無しさん
2006/09/18(月) 16:52:57> ぐぐりまくったけど、よくわからんです。どうすりゃいいですか?
目的、環境、制限条件、行った事、実行したコマンド、それらの結果、そして特にエラーメッセージを正確に述べる能力を身に付けることから始めよう。
0157デフォルトの名無しさん
2006/09/18(月) 20:05:37t
t
master.txt
と表示されるのですが、どこが不味いのでしょうか?
<コーディング>
print "ファイルのタイプは m/t ?";
$type=<>;
print $type;
if ($type=="m" ) {
print $type;
$price_file="pricem.txt";
$mt_file="master.txt";
}
else{
$price_file="pricet.txt";
$mt_file="tran.txt";
}
print $mt_file;
0158157
2006/09/18(月) 20:09:01キーボードから入力したtの表示は、別にあります。
画面上では、tは3つあります(入力分1つ+出力分2つ)
0159デフォルトの名無しさん
2006/09/18(月) 20:10:25chomp($type=<>);
if ($type eq "m") { ... } # 文字列比較はeq
0160デフォルトの名無しさん
2006/09/18(月) 20:53:16その釣ってもいないのに釣ら(ry
0161デフォルトの名無しさん
2006/09/18(月) 20:57:54(ryから先が「まだこの世に無い」のが丸わかりで痛い・・・
0162デフォルトの名無しさん
2006/09/18(月) 21:04:20まぁ通じてないからどうでもいいわ。
0163デフォルトの名無しさん
2006/09/18(月) 21:43:02/''''''strict'''''':::::::\
. |(●), 、(●)、.:| ふたりともやめて
| ,,ノ(、_, )ヽ、,, .::::|
. | `-=ニ=- ' .:::::::| これ以上わたしのために争わないで
\ `ニニ´ .:::::/
/`ー‐--‐‐―´\
0164デフォルトの名無しさん
2006/09/19(火) 00:52:35なんか、てめーのちんこねじ切りたくなるような、お返事サンクス。
自力でがんばってみるんでいいっす。
0165デフォルトの名無しさん
2006/09/19(火) 03:18:50あと橋本和明の本でPerlを身につけました。
0166デフォルトの名無しさん
2006/09/19(火) 05:13:49巷では結構有名な人みたいね。
マイナス方向に。
0167157
2006/09/19(火) 08:42:56どうも、ありがとうございました。
もう一つ教えて下さい。
$a = "山田(株)";
$a =~ s/(株)//;
の結果($a)が、山田() になります。
()も削除するには、どうすれば、良いのでしょうか。
0168デフォルトの名無しさん
2006/09/19(火) 08:55:100169デフォルトの名無しさん
2006/09/19(火) 11:55:19test.pl
という、ある実行ファイルがある。
test.pl "TEST 2CH VIP"
という引数を付けて実行する。
"TEST 2CH VIP"は12文字だ。すなわち12bytes。
12を16進数で表記すると0Cになるだろ。
引数の文字列のバイト数をカウントし、かつそれを16進数に変換して取り出すことは可能だろうか。
0170デフォルトの名無しさん
2006/09/19(火) 12:22:510171デフォルトの名無しさん
2006/09/19(火) 12:22:52もちろん可能。
printf "%02X\n", length (shift @ARGV);
0172デフォルトの名無しさん
2006/09/19(火) 12:25:260173デフォルトの名無しさん
2006/09/19(火) 13:26:500174171
2006/09/19(火) 13:50:440175デフォルトの名無しさん
2006/09/19(火) 16:32:280176デフォルトの名無しさん
2006/09/19(火) 17:14:30]% cat foo.tt
[% USE TruncateJp %]
[% FILTER truncate_jp('10') -%]
あああああああああああああああ
[%- END %]
% tpage foo.tt
あああ...
0177デフォルトの名無しさん
2006/09/19(火) 17:15:24use Template;
Template->new->process(\*DATA);
__END__
[% USE TruncateJp %]
[% 'あああああああああああ' | truncate_jp('8') %]
0178デフォルトの名無しさん
2006/09/19(火) 17:16:080179175
2006/09/19(火) 17:22:00jfoldがEUCで返してくるんですね、、
UTF8なテンプレートで使ってたのが原因でした。
0180175
2006/09/19(火) 17:24:54やはり原因はUTF8あたりらしい。
0181デフォルトの名無しさん
2006/09/19(火) 17:38:10[%
USE Jcode;
USE Dumper;
aaa = 'あああああああ'; # 本来は200文字ぐらい
bbb = aaa.jcode.jfold(100);
Dumper.dump(aaa);
Dumper.dump(bbb);
%]
こんな感じ。 テンプレートはUTF-8、データも当然UTF-8。困った…。
$VAR1 = 'あああああああ (略) ああ';
$VAR1 = [
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??????????????????????????????????????????????????',
'??'
];
0182デフォルトの名無しさん
2006/09/19(火) 17:40:26正式な使い方はさらに希望の文字コードで ->eucとか
->utf8とかしないとだめなんじゃ。そうじゃないと
どのコードで返していいかわかんないだろ。
0183デフォルトの名無しさん
2006/09/19(火) 17:51:51そっちのロケールとか文字コードは確認したの?
0184175
2006/09/19(火) 17:58:24Date: Tue, 19 Sep 2006 08:54:45 GMT
Server: Apache/1.3.34 (Unix) (Gentoo) mod_perl/1.29
Content-Encoding: gzip
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
200 OK
確認はブラウザにて。
truncate_jp使わないで、truncate使うと正常に表示(当然、全角文字は文字数によって切れる)なので、Template::Plugin::TruncateJpとかTemplate::Plugin::TruncateJpの中身のJcode.pmとかが怪しいという感じで調べてみたんだけど、手詰まりというか。
まぁ、全角文字がぶった切れない指定文字数で切れれば、他の方法でも構わないんだけど、ちょっと不可解な感じです。
0185デフォルトの名無しさん
2006/09/19(火) 18:12:33Template::Plugin::TruncateJpはeuc決め打ちっぽいので全部EUCに直すか
自分でなんとかしろ。
utf8決め打ちでよければ
my ($line) = jcode($str)->jfold($len-length($suf));
を
my ($line) = jcode($str)->jfold($len-length($suf))->utf8;
に改造する程度でいけるかもしれないが試してないので自己責任で。
$sufがascii範囲に収まってないとさらにlengthまわりもいじらないとだめそう。
0186175
2006/09/19(火) 18:44:03アリガトン
結局、Template::Plugin::TruncateJpをいじくってみたけど、
特定の場合(同じ文字列が大量に続くときだけ化ける)は治らなかったです。
他に原因があるのかもしれません。
今はテストデータぐらいしか化けないので、他の方法で対応を考えます。
お騒がせしました。
0187デフォルトの名無しさん
2006/09/19(火) 20:03:07utf8と決まっているのなら自動判定に頼らずにcode($str)を
jcode($str,'utf8')にしてみるといいと思われる。
0188デフォルトの名無しさん
2006/09/19(火) 20:36:57という文字列の < から > までを削除して
ほげほげふがふが
という文字列にするにはどうすればいいでしょうか。
0189デフォルトの名無しさん
2006/09/19(火) 20:53:49$buff =~ s/<[^>]+>//;
0190デフォルトの名無しさん
2006/09/19(火) 21:42:43なるほど、ありがとうございました。
0192デフォルトの名無しさん
2006/09/20(水) 01:18:59の中に何回あが含まれているか調べるにはどうすればいいですか?
0193192
2006/09/20(水) 01:36:38$str= "僕の名前はホゲです。昨日はホゲしました。明日もホゲでホゲ。";
〜ほげな処理〜
print $str;で4が表示されるようにしたいです。
0194デフォルトの名無しさん
2006/09/20(水) 02:29:39自己解決しました。
0195デフォルトの名無しさん
2006/09/20(水) 02:35:59気になって夜も眠れません
0196デフォルトの名無しさん
2006/09/20(水) 03:52:340197デフォルトの名無しさん
2006/09/20(水) 06:44:320199デフォルトの名無しさん
2006/09/20(水) 17:18:36制御系の貴殿らにperlスクリプト検定試験をプレゼントだ。
【ether⇔com1変換装置がある。この変換装置にtelnetしてconnect com1を
実行すれば、あたかもモデムなどのシリアル接続機器が自分のPCに
ローカルで接続しているかのような状態になる。ぜひとも"ATZ"などの
コマンドをモデムに送り込みたい。
以下のスクリプトをどう修正すればいいだろうか答えなさい。】
変換機のIPを192.168.1.1
変換機にログイン後、モデムに接続するコマンドをconnect com1とする
use strict;
use warnings;
use Net::Telnet ();
my($t,$pass,$host,$user);
$host = '192.168.1.1';
$user = 'admin';
$pass = 'admin';
$t = new Net::Telnet (-host => "$host");
$t->open("$host");
$t->waitfor('/login:/');
$t->print("$user");
$t->waitfor('/Password:/');
$t->print("$pass");
$t->waitfor('/#/');
$t->print("connect com1");
$t->waitfor('/com1 connected!/');
$t->print("ATZ");
0200デフォルトの名無しさん
2006/09/20(水) 17:27:570201デフォルトの名無しさん
2006/09/20(水) 17:59:19設問に含まれてないんだから問題に問題がある。
0202デフォルトの名無しさん
2006/09/20(水) 18:00:260203デフォルトの名無しさん
2006/09/20(水) 18:12:250204デフォルトの名無しさん
2006/09/20(水) 21:48:370205デフォルトの名無しさん
2006/09/20(水) 22:41:04でもcgi-lib.plやcgi.pmを使わないで自前で処理したいのです。
色々検索してはみたのですが、基本的にモジュールありきなので、
どこかに自前処理を紹介しているサイトなどありませんでしょうか?
#リクエストされたバイナリを文字列処理してbinmodeで吐き出せばできるかなと思って試してもアウトでした。
#根本的に理解できていないかもです。
板違いだったらごめんなさい。
0206デフォルトの名無しさん
2006/09/20(水) 22:56:06お!ちょっと待って!出来た!
そもそもSTDINをbinmodeにしなければいけなかったのですね!
自己解決しました!久々にヒットした!
0207デフォルトの名無しさん
2006/09/20(水) 22:58:050208デフォルトの名無しさん
2006/09/20(水) 23:11:57自前でPerlスクリプトから画像をアップロードしようとしてるのかと思った。
0209デフォルトの名無しさん
2006/09/20(水) 23:27:05説明ベタですんませんでした。(ちょっとビール呑んでperlだったもので)
CPANって英語なんすね。
でもレスありがとうございました。良い人達で良かったす。
今回は一応cgi-lib.pl見てて、あっ!と思ったという結論でした。
未熟ですんませんした。精進します。
久々にテンション上がったんでビール買ってきます。
0210167
2006/09/21(木) 18:38:51どうもありがとうございました。
これからは、良く調べてから質問します。反省してます。
0211デフォルトの名無しさん
2006/09/21(木) 19:16:43TVによく出てるひげ面の人。
あのひと、何の実績があって何が凄いの?
jcode.pl書きました、とか、
オレの知っている範囲ではショボい実績しかないけど。
くわしいひと、おしえて!。
0212デフォルトの名無しさん
2006/09/21(木) 19:47:090213デフォルトの名無しさん
2006/09/21(木) 19:55:480214デフォルトの名無しさん
2006/09/21(木) 20:30:52小飼弾は、jcode.plを元にJcode.pmを作っただけ。
その後、Encode.pmを開発。
最終学歴はカリフォルニア大学バークレー校中退。
0215デフォルトの名無しさん
2006/09/21(木) 20:54:00英語がぺらぺらでYAPCとか大きなイベントでリアルタイム通訳とか
もできる人。
ラリーウォールとか海外のPerlコミュニティーとの
橋渡しとかそういう業績が大きいんじゃないかな
しいて言えば、海外から見た日本のPerl界の顔役みたいな人ではないかと
モジュールの実装については・・
EncodeをPerlの標準にするんだったら
文字コード自動判別機能を盛り込みやがれぐらいはいいたいな・・
0216デフォルトの名無しさん
2006/09/21(木) 21:08:080217デフォルトの名無しさん
2006/09/21(木) 21:10:21Encode系って大変なんだぞ・・・
0218215
2006/09/21(木) 21:32:07あまり信用しないほうがいいよ。
guess、つかった時に判定失敗を食らった経験があって
経験上あまりあてにならない。
趣味ならともかく仕事で「たまに間違えるかも♪」
とかいう判定なら怖くて使えない。
けど「事前にエンコード文字列はPGがしっててしかるべき」
ちうスタンスらしいからあまり期待は・・・
0219デフォルトの名無しさん
2006/09/21(木) 22:43:37UTF-8でもUTF-16でも何でもいいから統一すりゃいいのにな。ばかばかしい。
0220sage
2006/09/21(木) 22:59:47/home/user/testprogram/bin/pg1 を実行したときに、このプログラムがある場所
/home/user/testprogram/binを取得するにはどうすれば良いでしょうか?
/home/user/testprogram/bin/pg1から
/home/user/testprogram/conf/test.conf というファイルをOpenしたいのです。
pg1を
#/usr/bin/perl
open(FP,"../conf/test.conf");
@data=<FP>;
close(FP);
print @data[0];
とした場合、
$ cd /home/user/testprogram/bin
$ ./pg1
PARM=DATA1
の様にtest.confの1行目を表示することができるのですが、
$ cd /home/user/testprogram
$ bin/pg1
では何も表示されません。
多分、
open(FP,"../conf/test.conf");
が「コマンドを実行した際のカレントディレクトリの相対パス」になっているのだと思います。
そこで、(1)「pg1があるディレクトリからの相対パス」を指定するか、(2)絶対パスで指定するようにしたいと考えています。
(1)はどうもむりっぽい。 諦めモード。
(2)は絶対パスをハードコーティングするのは不味いので、プログラムの中で取得する方法を探しています。
0221デフォルトの名無しさん
2006/09/21(木) 23:00:25なんか、日本の役場のファイルとかシフトJIS指定指定なんよね。しかもスペースすらも全部全角。
死ねばいいと思うよ。
0222デフォルトの名無しさん
2006/09/21(木) 23:03:46use FindBin qw($Bin);
print $Bin;
0224デフォルトの名無しさん
2006/09/21(木) 23:15:29Encode::Detectはどう?
0225デフォルトの名無しさん
2006/09/21(木) 23:55:02Encode.pm のオリジネイターは Nick たんなの。忘れちゃイヤン。
0226デフォルトの名無しさん
2006/09/22(金) 00:05:37それはちゃんと使ってないだけじゃないかな?
100%正確に識別することはできないし。
ちゃんと使えば他の自動判別と同程度には識別できるよ。
0227sage
2006/09/22(金) 01:58:50sample ===============================================
#!/usr/bin/perl
../lib/sampleclass.lib
my $obj1 = new CLS1; my $obj2 = new CLS2; ← $obj1,$obj2というオブジェクトを作る。
../lib/sampleclass.lib ===============================
{
package CLS1;
sub new {
my $class=shift; my $ref={}; $obj=bless $ref,$class;
return $obj;
}
sub testprint{print "TEST";}
}
{
package CLS2;
sub new {
my $class=shift; my $ref={}; $obj=bless $ref,$class;
return $obj;
}
sub testprint{print "TEST";}
}
とまあ、こんなかんじで、CLS1とCLS2という、名前が違うだけで中身は全く同じというクラスを作り、それぞれ$obj1,$obj2というオブジェクトを作っています。
よく見ると、CLS1にもCLS2にもtestprintという同じ関数があります。
このような同じ関数は今後も増える予定なので、testprint.libというファイルにしてしまおうと思います。
0228sage
2006/09/22(金) 02:00:12testprint.lib ======================================
sub testprint{print "TEST \n";}
../lib/sampleclass.lib ===============================
{
package CLS1;
sub new {
my $class=shift; my $ref={}; $obj=bless $ref,$class;
$opj->testprint(); ← 試しに実行してみます。
return $obj;
}
require "../lib/testprint.lib" ← testprint()を外に出した。
}
{
package CLS2;
sub new {
my $class=shift; my $ref={}; $obj=bless $ref,$class;
$opj->testprint(); ← 試しに実行してみます。
return $obj;
}
require "../lib/testprint.lib" ← testprint()を外に出した。
}
この状態でsampleを実行してみると
$ ./sample
Undefined subroutine &CLS2::testprint called at /home/Administrator/DGSCRIPT/bin/../lib/sampleclass.lib line 18.
TEST ← CLS1のtestprintは成功
となり、CLS1のtestprintは成功し、CLS2のtestprintは失敗します。
requireの仕方がおかしいのでしょうか?
0229デフォルトの名無しさん
2006/09/22(金) 02:38:24ちゃんと判定機能ついてるよ。
おまえがドキュメント読んでないだけだろ。
>>218
文字コード判定を絶対に間違えないライブラリなんてものが存在するなら
お目にかかりたいんですが、是非教えていただけませんでしょうか?
0230デフォルトの名無しさん
2006/09/22(金) 02:46:03他の言語で似たような機構のメンテナンスしてるけど大変…。
あと、絶対に間違えない文字コード判定なんて不可能。
>>215 は知ったかぶり。
0231デフォルトの名無しさん
2006/09/22(金) 03:32:02JcodeやEncodeがしょぼいと思ってるなら
これだけ多くの人に使われるモジュールを自分で作ってみ。
そして長期にわたってメンテナンスを継続してみ。
そうすればおまえが以下にあさはかな人間かが分かるよ。
0232デフォルトの名無しさん
2006/09/22(金) 08:46:13文句を言うのは壁の向こう側の「お客さん」。
・・と書いてて、文字コード判定処理の改善方法を思いついたよ。
0233デフォルトの名無しさん
2006/09/22(金) 09:10:33なんで継承しないの?
0234デフォルトの名無しさん
2006/09/22(金) 09:47:55・CLS1 と CLS2 の中身が同一で、それぞれ異なる状態を保持したい。
→同一クラスとして実装し、必要に応じてインスタンスを生成してください。
・CLS1 と CLS2 が良く似ているが、それぞれに異なる機能を持たせたい。
→共通の機能をベースクラスに持たせ、CLS1、CLS2 をその派生クラスとし、機能などを継承してください。
・面倒くさい事はいいからとっとと動く方法教えろやボケ。
→require を do に書き換えてかわいそうな子扱いされてください。
これは require が %INC を参照し、自動で同一ファイルのロードを避けるため生じる現象です。
0235227
2006/09/22(金) 10:01:47>234
ほんと なんも知らなくてすんません
>・CLS1 と CLS2 が良く似ているが、それぞれに異なる機能を持たせたい。
やりたいのはこれです。
なので、
>共通の機能をベースクラスに持たせ、CLS1、CLS2 をその派生クラスとし、機能などを継承してください。
これをやろうと思います。 ありがとうございました。
0236227
2006/09/22(金) 10:42:38ttp://www.rfs.jp/sb/perl/04/01.html
ttp://www.rfs.jp/sb/perl/04/02.html
ttp://www.rfs.jp/sb/perl/04/03.html
を読んで見て、どうやらモジュールなるものを作らないといけないらしい
ということがわかりました。
上記のサイトを参考に
testprint.pmというファイルを作って
CLS1の中で
use testprint;
として実行してみたところ
Can't locate testprint.pm
となります。 testprint.pmを置く場所がまずいのでしょうか?
0237デフォルトの名無しさん
2006/09/22(金) 10:59:330238デフォルトの名無しさん
2006/09/22(金) 11:56:05そのとおり。
@INCで示されたパス以外の場所にモジュールをおく場合は
use lib qw(/path/to);
って感じで自作モジュールを置く場所を利用する側のスクリプトで指定する。
0239227
2006/09/22(金) 12:47:29でけた!! ありがとう!!
0240デフォルトの名無しさん
2006/09/22(金) 13:10:120241デフォルトの名無しさん
2006/09/22(金) 14:40:33MeCabのバージョン:mecab-0.93.exe
MeCabの辞書:mecab-ipadic-0.91-utf8
Perlのバージョン:v5.8.8 built for MSWin32-x86-multi-thread
MeCabを使って形態素解析を行おうとしたのですが、付属のtest.plを実行した
ときに次のようなエラーが出ます。
Can't call method "parse" without a package or object reference at test.pl line 3.
このエラーを出なくするためにはどうしたらよいのでしょう。
ちなみに
use MeCab;
としても別段エラーは発生しません。
test.plの中身↓
use MeCab;
$m = new MeCab::Tagger ("-Ochasen");
print $m->parse ("今日もしないとね");
0243デフォルトの名無しさん
2006/09/22(金) 14:54:08はい。確認済みです。
0244デフォルトの名無しさん
2006/09/22(金) 15:00:24READMEは読んだ?
0245デフォルトの名無しさん
2006/09/22(金) 15:05:42これはC++などの他のオブジェクト指向言語の理解にも役立ちますか?
0246241
2006/09/22(金) 15:17:23READMEの通りにMakefile.plを実行すると
'mecab-config' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とのエラーがでるので、以下のサイトの手順を踏んでバインディングを行いました。
http://namazu.asablo.jp/blog/2006/03/12/286404
MeCabのモジュールはどうやら正常に呼び出せているようなのですがメソッドの実行が
上手くいきません。MeCab.pmを見てみると、以下の部分が呼び出すメソッドのようです。
package MeCab::Tagger;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( MeCab );
%OWNER = ();
%ITERATORS = ();
*parse = *MeCabc::Tagger_parse;
*parseToNode = *MeCabc::Tagger_parseToNode;
*parseNBest = *MeCabc::Tagger_parseNBest;
*parseNBestInit = *MeCabc::Tagger_parseNBestInit;
*nextNode = *MeCabc::Tagger_nextNode;
*next = *MeCabc::Tagger_next;
*formatNode = *MeCabc::Tagger_formatNode;
*what = *MeCabc::Tagger_what;
0247デフォルトの名無しさん
2006/09/22(金) 15:25:10newの返り値がundefineじゃない?
0248デフォルトの名無しさん
2006/09/22(金) 15:28:04test.plがこけるならmake testでエラーでてるはずだと思うんだけど
0249デフォルトの名無しさん
2006/09/22(金) 15:33:41自転車の乗り方を覚えるために、曲乗りから始めるようなもんです。
0250241
2006/09/22(金) 15:50:57以下で実行してみると、okと出力されます。何らかの定義はされていると思うのですが……。
しかしprintしても何も表示されない。
use MeCab;
$m = new MeCab::Tagger ("-Ochasen");
print "ok" if (defined($m));
>>248
make testはどのディレクトリで行えばよいのでしょうか?
0251デフォルトの名無しさん
2006/09/22(金) 15:59:26役立ちません
025224
2006/09/22(金) 16:02:540253デフォルトの名無しさん
2006/09/22(金) 16:17:26普通に役立ちますよ。
「アルゴリズム」がそうであるように、
「オブジェクト指向」の基本的な概念は言語を問いませんから。
0254デフォルトの名無しさん
2006/09/22(金) 16:18:50の|\?|はどういう意味ですか?
0255241
2006/09/22(金) 16:27:37?という文字自身のことです。
Perlの正規表現では?は「直前の文字が0個または1個」というように扱われます。
たとえば/test?/は"test"または"tes"にマッチします。
しかし/test\?/という場合は"test"にも"tes"にもマッチせず、"test?"にマッチします。
以上より/!!|\?|。/というのは"!!","?","。"のいずれかにマッチします。
>>241が未だにできません……
0256245
2006/09/22(金) 16:32:03>251
>253
ありがとう。
いいほうに受け取って役立つと思っていきます。
「役立つ」という言葉が曖昧でした。
ここでいう役立つは、
オブジェクト指向とはどういうものかが、
実際にコードで表現でき、そして他のオブジェクト指向
言語を使う人と、理解を共有することができるという意味です。
0257デフォルトの名無しさん
2006/09/22(金) 16:39:38なるほど
"|\?|"で何か意味を持つものかと思っていました。
"|"は区切り文字というか又はの意味だったんですね。
分かりやすい説明ありがとうございました。
0258253
2006/09/22(金) 17:29:26ちょっと補足です。たしかにPerlでは>>249が抽象的に指摘しているように、
1. 「オブジェクト指向」を使う前にリファレンスやパッケージ
というPerlの機能を理解する必要がある。
2. また、クラス名を引数で受け取るなどちょっと特殊な
ところがある。
3. ネット上で個人が公開しているようなCGIスクリプト等では
「オブジェクト指向」はそれほど使われていない。
と、「オブジェクト指向」に到達するまでに少々ステップが必要なので、
解説書なりを読んでPerlでのオブジェクト指向が
理解しにくいと感じたら、ためらわずに他の言語も試されるのがよいかと。
0259デフォルトの名無しさん
2006/09/22(金) 17:50:010260デフォルトの名無しさん
2006/09/22(金) 17:57:32正直、Perlで勉強するのはおすすめしない。
Perlから入って、他のOOPの人と理解を共有するのは困難。
まだPHP5の方がマシ。
できればRubyかPythonでどうぞ。
0261デフォルトの名無しさん
2006/09/22(金) 17:59:400262デフォルトの名無しさん
2006/09/22(金) 17:59:42Perlでやる場合、言語仕様に惑わされる可能性大だぬぁ。
0263デフォルトの名無しさん
2006/09/22(金) 18:16:21Perlだとできないから、なんちゃってな方法で回避、
というのが多過ぎ。
既にOOPについて理解してる人が書くなら、どうにでもなるけど。
うまくPerl用にデフォルメするだろうし。
0264256
2006/09/22(金) 18:27:29>260
>261
>262
ありがとう御座います。
うーん、そうなんですか〜。
私の周りは、VBとかVC++
などのMS系言語(?)を使う人が多くて、
オブジェクト指向(クラス等)を使いこなしています。
わたしは、独自路線でperlをまあ、趣味でやっていますが
オブジェクト指向も知っておきたいなあと思っています。
(解らないとくやしいし)
オブジェクト指向を純粋に学ぶには
遠回りかもしれませんが、perl自体気に入ってるので
続けていこうと思います。
0265ニュース速報+
2006/09/22(金) 19:05:11【ネット】 ひろゆき氏失踪で、2ちゃんねる閉鎖?…本人は「やっぱ、失踪してんじゃね?」とレス★4
http://news19.2ch.net/test/read.cgi/newsplus/1158916178/l50
【2ch】“ひろゆき”こと西村博之氏失踪…最悪の場合「掲示板閉鎖」も(夕刊フジ)★2
http://news18.2ch.net/test/read.cgi/mnewsplus/1158915579/
2ちゃんねるの「ひろゆき」失踪…掲示板閉鎖も
インターネットの巨大匿名掲示板「2ちゃんねる」の管理運営者「ひろゆき」こと、
西村博之氏(29)が失踪状態にあることが22日までにわかった。
同掲示板は西村氏個人が管理している。当局が不適切な書き込みの削除や
投稿者の情報を求めようにも行方知れずで放置され、
裁判所からの呼び出しにも応じていない。
ネット社会の象徴的な存在でもある「2ちゃんねる」は、最悪の場合、
「掲示板閉鎖」という事態まであり得る情勢だ。
「西村氏は8月中旬から携帯電話に出ないし、メールを出しても返事がない。
債権者が破産申し立てする動きもある」
0266デフォルトの名無しさん
2006/09/22(金) 19:11:330267デフォルトの名無しさん
2006/09/22(金) 19:58:39どうか教えて下さい。
リファラを http://pc8.2ch.net/tech/index.html とし、
http://img.2ch.net/img/tech_a.gif のファイルを
c:\download というディレクトリにダウンロードするには、
どうすればよろしいでしょうか?
0268デフォルトの名無しさん
2006/09/22(金) 20:20:22$folder = 'c:/download/';
$ref = 'http://pc8.2ch.net/tech/index.html';
$url = 'http://img.2ch.net/img/tech_a.gif';
$filename = $1 if ($url =~ m{([^\/]+)$});
$ua = LWP::UserAgent->new;
$req = HTTP::Request->new('GET', $url);
$req->referer($ref);
$ua->simple_request($req, $folder . $filename);
0270デフォルトの名無しさん
2006/09/22(金) 21:52:01excelみたいに
行、列ごとの計算、操作をしようとすると
その都度、行列転置しなければならないのか???
ほかにらくにできる方法はないの?
0271デフォルトの名無しさん
2006/09/22(金) 23:07:08# 列ごとに操作
sub rows(&\@$) {
my($p, $mtx, $i) = @_;
for my $E (@$mtx) {
local $_ = $E->[$i];
$E->[$i] = &$p;
}
}
こんな感じの操作用のプロシージャを作っておいて、利用する。
my @a=(
["A","B","C"],
["a","b","c"],
["1","2","3"]);
rows {"($_)"} @a, 1;
結果 ==> (
["A","(B)","C"],
["a","(b)","c"],
["1","(2)","3"])
0272デフォルトの名無しさん
2006/09/23(土) 01:02:00そうか?
俺はPerlでOOPを覚えたけど、他の言語で書くときも問題なかったよ。
PHPは言語仕様が腐ってるので(PHP5も含む)できれば触りたくないなぁ。
とはいえ、OOPを覚えるならRubyのほうがいいと思うよん。
0273デフォルトの名無しさん
2006/09/23(土) 13:59:12Perlだけで覚えても、OOPの考え方や組み方は身に付かないよ。
他の言語触った時に、public, protected, privateやinterfaceを
どう使っていいか分からない、なんてことになりかねない。
0274デフォルトの名無しさん
2006/09/23(土) 14:28:19set_sqlの山になるくらいなら、自分でSQLを発行した方が効率が良いような気がするんですが。
0275デフォルトの名無しさん
2006/09/23(土) 15:35:45SQLをかけない奴でもRDBMSにアクセスできることじゃないぞ。
それが理解できないのであれば
どんなに説明しても話は平行線のままなので
お好みのままにスクリプトファイルに直接SQLをガシガシ書くがよかと。
0276デフォルトの名無しさん
2006/09/23(土) 17:15:43レスどうもです。
平行線になるかどうかわかりませんが、
O/Rマッピングするクラスを(SQLを書いて)自前で用意するのと、
Class::DBIを継承して作るのとだと、どっちが効率がいいのかわかんなくなったので。
Class::DBIだとどうも無駄にメモリを消費するような気がするんですが、
これは使い方が悪いだけなんでしょうか。
0277275
2006/09/23(土) 17:52:43あぁ、そういう意味っすね。
すんません、勝手に話を平行線にしようとしてたのは私でした m(_ _)m
そういう話になると好き好きでいいと思います。
むしろClass::DBI, DBIx::Class, Rose::DBなんかよりいい
O/Rマッパーモジュールを作ってください。
自分はO/Rマッパーを自作しないのはめんどくさいのと
共同作業者に使い方を覚えさせる強制が発生するのが良くないと思うので
大体の人が使い方分かってるClass::DBIを使い続けています
0278デフォルトの名無しさん
2006/09/23(土) 18:20:30こちらこそ言葉足らずで失礼しました。
ケースバイケースということでしょうか。
集団での作業だと、やっぱりClass::DBIの方が良いのかな・・・
引き続き精進したいと思います。
ありがとうございました。
0279デフォルトの名無しさん
2006/09/23(土) 18:52:30配列を数値順にソートしたいのですけど、
どのようにすればよいのでしょうか?
0280デフォルトの名無しさん
2006/09/23(土) 19:23:23前者は /^\d+$/;
後者は sort
0281デフォルトの名無しさん
2006/09/23(土) 20:42:28横から蛇足な説明かもしれないけど
sort関数はデフォルトはcmpで文字列整列だから
数値整列の場合は<=>を明示するの忘れると痛い目にあうよ。
4〜5年前にunix timestampが桁上がりして時間で整列という処理にて
sortを間違って使い方したシステムをまかされててえらい目にあった。
0282デフォルトの名無しさん
2006/09/23(土) 21:31:24だと、何か文字列を入力してEnterを押すと続行となるようですが、
キーボードの入力(例えば Kが押された など)を判定するにはどうすればいいのでしょうか?
押されたキーによって処理を変える、といったことがしたいのです。
0283デフォルトの名無しさん
2006/09/23(土) 21:32:490284デフォルトの名無しさん
2006/09/23(土) 21:50:48sortは
sort {$a <=> $b} @array
とかしないとまずくね?>数値順
0285デフォルトの名無しさん
2006/09/23(土) 22:00:34use version; our $VERSION = qv('1.0.3');
って例があるんだけど、これどうして1行で書いてあるの?
なにか2行で書いちゃダメな理由ってある?
0286デフォルトの名無しさん
2006/09/23(土) 22:02:49パッケージプログラム(ExtUtils::*の類)がモジュールのバージョンを調べる際に、$VERSIONが含まれる行をeval()するのだが、
qv()はversion.pmの中で定義されているため、use version;しないとバージョン値を取得できないのだ。
0288デフォルトの名無しさん
2006/09/23(土) 22:23:07OS依存というのは、OSによって方法が異なるということでしょうか?
WindowsXP と ActivePerlを使っています。
0289デフォルトの名無しさん
2006/09/23(土) 22:47:580290デフォルトの名無しさん
2006/09/24(日) 00:12:47>キーボードの入力(例えば Kが押された など)を判定するにはどうすればいいのでしょうか?
つまり、ターミナルからエンタキー無しの、1文字入力したいって
事ですか?
Term::ReadKey を使ってくみてださい。
0291デフォルトの名無しさん
2006/09/24(日) 00:32:43ActivePerlでは使えなかったはず。
0293デフォルトの名無しさん
2006/09/24(日) 01:06:270294デフォルトの名無しさん
2006/09/24(日) 02:36:51日本語でお願い
0295デフォルトの名無しさん
2006/09/24(日) 03:48:340296デフォルトの名無しさん
2006/09/24(日) 03:56:48キータイピングは正確に。
0297デフォルトの名無しさん
2006/09/24(日) 07:41:58おや、いつの間にか使えるようになってたんか。以前は使えなかったと思うんだが。
で、代わりにTerm::Getchなんてものもあったんだが。(しかも微妙に使い勝手が悪い。)
Term::ReadPasswordが使えなかったのは確かなんだが。
Term周りはActivePerlはほかとはかなり違うから正直うんざり。
0298デフォルトの名無しさん
2006/09/24(日) 10:43:58期待していた動作をしました。
ありがとうございました。
0299デフォルトの名無しさん
2006/09/24(日) 13:16:07例えば
print "hoge";
などでコマンドプロンプトに表示された文字群を
一旦全て消す、といったことがしたいのですが、
どうすれば良いでしょうか?(そもそも可能でしょうか?)
0300デフォルトの名無しさん
2006/09/24(日) 13:27:37とかじゃなくて?
0301デフォルトの名無しさん
2006/09/24(日) 14:03:03つまり「ESCシーケンス」のことを言いたいんじゃない?
ActivePerl の環境は弄ったことないけれど、おそらく
print "¥x1B[2J";
他は「エスケープ・シーケンス」でググって。
0302デフォルトの名無しさん
2006/09/24(日) 14:25:28>キーボードの入力(例えば Kが押された など)を判定するにはどうすればいいのでしょうか?
>押されたキーによって処理を変える、といったことがしたいのです。
getc を使うんじゃないの?
オレは使ったことないからよく知らんけど。
0303302
2006/09/24(日) 14:26:510304デフォルトの名無しさん
2006/09/24(日) 14:31:05残念ながら、WinNT系では32bitプログラムはエスケープシーケンスが使えない。
Win9xまでなら使えたんだが。
どうしてもやるのなら、Win32::Consoleあたりを使うことになる。
0305デフォルトの名無しさん
2006/09/24(日) 16:02:20半分冗談だが
print "\n"x50;
0306デフォルトの名無しさん
2006/09/24(日) 16:37:560307デフォルトの名無しさん
2006/09/24(日) 17:05:160308デフォルトの名無しさん
2006/09/24(日) 18:19:56改行していないなら、
print "\r" . " "x80 . "\r"
とか。
改行ありならかなり面倒になると思う。
>>304
の言うとおり、NT系のコマンドプロンプトではエスケープシーケンスが使えない。
以前文字の色を変えようとした時に、うまくいかなくて気が付いた。
0309ヽ(´ー`)ノ ◆.ogCuANUcE
2006/09/24(日) 21:45:10どの程度キチンと動くか知らんが。
0310デフォルトの名無しさん
2006/09/24(日) 23:22:04Themeサービス切ってたからかも知れないけど。
0311デフォルトの名無しさん
2006/09/25(月) 01:13:42Win32::Console を使えばいいのかもしれないけど、
自分で使うスクリプトだったし、面倒だったので逃げた w
単にずらずらと出力するスクリプトだし、出力に色をつけたら見やすいかな、程度だったし。
とりあえず、"\a" のベルが使えるのは助かった。
>>310
XPで動いたっていうのは、Win32::Console を使った方?
それとも、ANSIエスケープ・シーケンスの方?
もし後者なら興味深いけど。
0312デフォルトの名無しさん
2006/09/25(月) 01:24:36それが生粋のPerl Mongers。
逆に配布用スクリプトの時の方が、依存モジュールに気を使うなぁ。
0313デフォルトの名無しさん
2006/09/25(月) 02:08:07とりあえずコレ使いました
ありがとうございます
0314デフォルトの名無しさん
2006/09/25(月) 21:31:03と
for (@INC) { print;}
は、同じ結果が表示されます。
後者は意味が理解できるのですが
前者はなぜそうなるのかわかりません
printしているのは一体何(どの変数?)なんでしょうか
文法的に解説してもらえるとありがたいです
0315デフォルトの名無しさん
2006/09/25(月) 21:37:51こんな流れで @INCの中身が表示されてる感じ。
print ← for ← @INC;
forが@INCの中身を引っ張る
それが$_に入る
print に$_が渡る
0316デフォルトの名無しさん
2006/09/25(月) 21:45:52早速回答ありがとうございます
$_ に入った値を print しているということは
print は $_ に値が入る度に(つまり@INCの中身の個数分)
毎回呼び出されてるということでしょうか?
それはちょっと文法的におかしいようにも思えるのですが
そういうものなんでしょうか?
0317デフォルトの名無しさん
2006/09/25(月) 21:50:51毎回 print は呼び出されてる。
試しに
print $_, "¥n" for @INC;
を実行すると分かる。
そういうものです。
0318デフォルトの名無しさん
2006/09/25(月) 21:51:52print "ABC" if (/abc/);
print for (@INC);
sleep 1 while (!terminated);
0319デフォルトの名無しさん
2006/09/25(月) 21:57:48>>318
なるほど、ifやwhileが後ろにつくのと同じように
forも後ろにつくと考えればいいんですね
(ifやwhileは違和感なく受け入れていたのですが)
モヤモヤとしてたので、聞いてよかったです
ありがとうございました
0320デフォルトの名無しさん
2006/09/25(月) 22:01:240321デフォルトの名無しさん
2006/09/25(月) 22:31:15していないはずなのに動作がおかしい。
0322デフォルトの名無しさん
2006/09/25(月) 22:35:27my $content;
while(1) {
sleep(30);
$content = get('xxx');
#正規表現でいろいろ処理して更新差分だけを表示
}
みたいにやっているのだけど$contentの内容をチェックしてみたけど更新が反映されていない。
自前でやるしかないのかな。
0323デフォルトの名無しさん
2006/09/25(月) 23:38:590324デフォルトの名無しさん
2006/09/26(火) 00:12:08アクセス数が多いサイトはリバースプロキシかまして
間にキャッシュサーバが入ってたりしてるばあいもあるけど
自前でWEBサーバ立ち上げてネットワーク上に
キャッシュが入らないようにテストして確認済み?
正規表現が間違っているとかの他の間違えの要素は排除済み?
古いほうのデータと新しいほうのデータをeqで比較しても同じなの?
ソース見る限り$contentには常に新しいのしか残ってないけど
どうやって古いのと比較してるの?
0325322
2006/09/26(火) 01:08:11use strict;
use LWP::Simple;
my ($old,$content,$output,$fh);
while (1) {
sleep(30);
open $fh, '<', 'out.txt' or die "$!";
$old = <$fh>;
$content = get('');
($output) = $content =~ /<dl class="bookmarklist" id="(.*?)">/;
if ($output eq $old) { next; }
open $fh, '>', 'out.txt' or die "$!";
print $fh $content;print "$output\n";
}
はてなブックマークの自サイトの新着ブックマークを報告するためのスクリプトなんですが、
ブラウザで更新したらすでに新しいものが追加されているのに、
そのスクリプトを実行していても、それが検出されないのです。で、一回スクリプトを終了して
再度実行するとうまく検出されます。どうもループ中でキャッシュが働いているとしか思えないのですが。
0326デフォルトの名無しさん
2006/09/26(火) 01:15:26>$old = <$fh>;
古い方は先頭の1行しか取って来てないけど、いいの?
0327デフォルトの名無しさん
2006/09/26(火) 01:21:00if ($output eq $old) { next; }
で比較してるのは、現在のソースの中の ($output) 部分と 30秒前のソースの 1行目だよね。
なんで等しくなることがあるのか俺には理解できないんだが・・・。
0328322
2006/09/26(火) 01:27:17ありがとうございます。ええ、それでいいのです。そこに書き込まれているのは必ず
正規表現/<dl class="bookmarklist" id="(.*?)">/で抜き出されたカッコの中の部分なので
0330デフォルトの名無しさん
2006/09/26(火) 01:33:54でも古い方は改行コード入ってるよ。
新しい方には無いけど。
0331デフォルトの名無しさん
2006/09/26(火) 01:42:36質問者じゃないけど
現行で不便に感じるorz
ローカルでブラウズする際に単にLWP::Simpleでmirrorsだとキャッ
シュだけしてくれても見辛い。
wgetでmirrorしてる感じ(´・ω・`)
低レベルですまそ。高レベル?上級者?perlmongerなら
更新分に対し強調をしたり、目印を付けたり
つまり採ってきて見やすく加工する処理をして、吐きなおし。新し
い部分がすぐ判るようにする
そんな便利なのを見た。そんでそんな処理したいけど出来ないorz
前回と今回の比較で今回の部分を黄色で塗りつぶすみたいな
出来たら便利だと思うんだけど...凄腕のperlmongerにhackして便
利にして欲しいです...
0332デフォルトの名無しさん
2006/09/26(火) 01:53:06何言ってるかわからん
根本的に何を不便に感じてるんだ?
0333331
2006/09/26(火) 02:23:02ttp://cachu.xrea.jp/perl/html_update_check.html
みたいな事...をミラーついでにしてほしい。
これは本人がいつ更新したか忘れるから判り易いようとあるけど
更新部分がすぐ判るように出来ればと
0334デフォルトの名無しさん
2006/09/26(火) 07:33:090335デフォルトの名無しさん
2006/09/26(火) 09:07:10これぐらい自分でやれよ…。
0336デフォルトの名無しさん
2006/09/26(火) 09:30:180337デフォルトの名無しさん
2006/09/26(火) 10:57:39my $b = $a + ($a++) + ($a++) + ($a++);
がperlで$b=8になるんだけど(;´Д`)なんでよ?
0338デフォルトの名無しさん
2006/09/26(火) 11:23:47答えがどうなるのが正しいのか気になる。
0339デフォルトの名無しさん
2006/09/26(火) 11:26:09左下でくっつく形のグラフになると思うのですが、これを左上で
くっつく形のグラフにする事は可能なのでしょうか?
左上でくっつく場合は、Y軸の目盛を逆転させて、上から下に向かって
数値が増えていくグラフにしたいと考えております。
色々と探してみたのですが、どうしても見付からなくて・・・。
0340デフォルトの名無しさん
2006/09/26(火) 13:56:29>はてなブックマークの自サイトの新着ブックマークを報告するためのスクリプトなんですが、
スクレイプしなくても
ttp://b.hatena.ne.jp/entrylist?mode=rss&url=http%3A%2F%2Fb.hatena.ne.jp%2Fentry%2Fhttp%3A%2F%2Fwww.example.com%2F%2A&sort=eid&threshold=1
のRSSを巡回すれば済むよ。
example.comは自分のサイトにかえてね。
0341デフォルトの名無しさん
2006/09/26(火) 13:58:120342デフォルトの名無しさん
2006/09/26(火) 17:17:45先頭から評価していって、()付きの場合は先に評価するからじゃないの?
$a + ($a++)で、()付きの方を先に処理して $a + 1。そして、$aに1加算されて$a = 2。
この時点で()無しの方が確定して、2 + 1 = 3。次に3 + ($a++)で、$a = 2なので、
3 + 2。$aに1加算されて$a = 3。最終的には 2 + 1 + 2 + 3 = 8。
でも、こういう評価順序って、OSやVersionによって不定なんじゃなかったっけ?
0343デフォルトの名無しさん
2006/09/26(火) 17:46:36式だけじゃ 8 になるなんて考えなきゃわからんし、合ってるかどうかも不安だw
0344デフォルトの名無しさん
2006/09/26(火) 22:50:11可読性も含め、バグの原因にもなるし。
0345デフォルトの名無しさん
2006/09/26(火) 23:20:280346デフォルトの名無しさん
2006/09/26(火) 23:57:110347デフォルトの名無しさん
2006/09/27(水) 00:27:320348デフォルトの名無しさん
2006/09/27(水) 00:34:48void contextの場合は最適化されるからどっちも同じ。
値を使う場合は、++$iの方がちょびっとだけ効率がいいが、ほとんど変わらん。
0349デフォルトの名無しさん
2006/09/27(水) 11:09:49open関数で(ファイル名が)マルチバイトのファイルを開けますか?
文字コードとかは全てutf8で統一しています。
open ( IN , "cat (日本語ファイル名) |" ); の様な方法でもなんでもokです。
というか、中身が読み込めればどんな方法でも良いのですが。
0350デフォルトの名無しさん
2006/09/27(水) 11:43:10試してみれば良いのでは
0351デフォルトの名無しさん
2006/09/27(水) 11:54:23マルチバイトのファイル名だと、cat : (ファイル名) : そのようなファイルやディレクトリはありません
となります。英数字及び空白文字のファイル名なら問題ないのですが、、
0352349
2006/09/27(水) 12:30:41Perlは正常に機能していました。
自分のミスです。申し訳ないっす... ...o.rz..
0353デフォルトの名無しさん
2006/09/27(水) 14:51:23perl単体で可能だろうか。
"マッチ演算子"というのがどうやら関係していそうなんだが、
具体的な書き方がわからない・・・・
----
$srcip = <STDIN>;
chomp($srcip);
exec "cat nsfw.log | grep 'src=$srcip'";
0354デフォルトの名無しさん
2006/09/27(水) 14:59:40my $log = "nsfw.log";
open(FH, $log) or die "$log : $!¥n";
while (<FH>) {
print if /src=$srcip/;
}
close(FH);
0355デフォルトの名無しさん
2006/09/27(水) 15:48:40> use version; our $VERSION = qv('1.0.3');
> って例があるんだけど、これどうして1行で書いてあるの?
便乗質問です。
CPAN.pmとかにある
----------
package CPAN;
$VERSION = '1.87';
$VERSION = eval $VERSION;
----------
の、$VERSION = eval $VERSION;は一体何をやってるの?
0356デフォルトの名無しさん
2006/09/27(水) 16:20:49ナムナム(-人-)
0357デフォルトの名無しさん
2006/09/27(水) 16:46:000358デフォルトの名無しさん
2006/09/27(水) 16:54:34ナムナム(-人-)
0359デフォルトの名無しさん
2006/09/27(水) 17:07:17んな奴べつに死んだっていい
0360デフォルトの名無しさん
2006/09/27(水) 17:23:48Nick Ing-Simmonsさん ご冥福をお祈りします。
0361デフォルトの名無しさん
2006/09/27(水) 17:26:40ネタで言ってるんだよね?
0362デフォルトの名無しさん
2006/09/27(水) 17:27:510363デフォルトの名無しさん
2006/09/27(水) 17:51:01ネタ?つか、お前、>>215 だろ。
お前が死ねはよかったのに。氏ねじゃなくて死ね。
0364デフォルトの名無しさん
2006/09/27(水) 17:52:40まじで分からない。
0365デフォルトの名無しさん
2006/09/27(水) 17:54:040367デフォルトの名無しさん
2006/09/27(水) 17:58:19出てくるね。
まあ、オープンソースなんだから、だれか死んでも支障なく車輪は回り続ける
んでしょう? 特に気にすることないんでは?
0368デフォルトの名無しさん
2006/09/27(水) 18:13:17その誰かが亡くなったことを悲しむのが、そんなに不思議か?
合掌
0369デフォルトの名無しさん
2006/09/27(水) 18:13:32ありがとう。うまくいった。
精進する。
0370デフォルトの名無しさん
2006/09/27(水) 18:26:450371デフォルトの名無しさん
2006/09/27(水) 18:39:35先人の業績を利用してあぐらかいてるくせに
敬うことを知らない恥知らずはどっかいけ
0372デフォルトの名無しさん
2006/09/27(水) 18:43:400373デフォルトの名無しさん
2006/09/27(水) 18:44:29そんな奴らは死に際、死した後に
家族・友達・知人だーれもが集まらない寂しい奴なんだよ。
妬んで死者に暴言はいてるわけだから、相手にするだけ無駄。
0374デフォルトの名無しさん
2006/09/27(水) 18:55:37業績を残した先人の死を利用して人を罵倒している人がいますね。
0375デフォルトの名無しさん
2006/09/27(水) 19:01:02人の死の知らせのただ中で、他人に「死ね」と叫ぶ者がいる。そして、
他人の死後について、呪いの言葉を吐く者がいる。
今後この名を見るたびに、Perlに巣食ったこの変質者たちのことを
思い出して不快な思いをすることになるだろう。
0376デフォルトの名無しさん
2006/09/27(水) 19:08:240377デフォルトの名無しさん
2006/09/27(水) 19:12:34>>374-375のような友達いない奴は屈折した曲解して
屁理屈こねて素直に過ちを認めることが出来ず
人との摩擦がおきたときに我を押し通して友人を失ってくのか。
変人の心理の一端を見れてとても参考になりました。
0378デフォルトの名無しさん
2006/09/27(水) 19:13:42作曲:>>380
0379デフォルトの名無しさん
2006/09/27(水) 19:16:45の一行前に
> ↑オマエのほうが死んだってどうでもいい奴なんだよボケ。
と書ける心って……
0381デフォルトの名無しさん
2006/09/27(水) 19:21:310382デフォルトの名無しさん
2006/09/27(水) 19:26:360383デフォルトの名無しさん
2006/09/27(水) 19:35:480384デフォルトの名無しさん
2006/09/27(水) 19:49:23心臓発作とは・・・。まだ若いのだろうにもったいないねぇ。
ご冥福を・・・ (´-ω-)っ† Amen
0385デフォルトの名無しさん
2006/09/27(水) 19:53:16こうなることくらい予測しる
0386デフォルトの名無しさん
2006/09/27(水) 19:55:29彼の作った車輪とその精神は、彼の死後も脈々と受け継がれていくんだろうなあ。
0387デフォルトの名無しさん
2006/09/27(水) 19:57:47ライブドアねたの番組にゲストで呼ばれて
髭面の濃い顔と相反して甲高い声ですげーギャップのある人ね。
番組の進行役に意見もとめられたとき
予想として求められている言葉とぜんぜん違うことを
独特の世界観で語りだすからまわりと全く噛み合ってなくて
視聴者層には「何言ってんだこいつ?」として見られている。
0388デフォルトの名無しさん
2006/09/27(水) 19:59:090389デフォルトの名無しさん
2006/09/27(水) 20:03:270390デフォルトの名無しさん
2006/09/27(水) 20:03:53えー、Encode.pm の中に
This project was originated by Nick Ing-Simmons and later maintained by Dan Kogai E
って書いてあるお?( ・з・)
面白そうな人だったんですね。(笑
0391デフォルトの名無しさん
2006/09/27(水) 20:08:500392デフォルトの名無しさん
2006/09/27(水) 20:53:14○○でご尽力なさった○○氏が〜 ってよ。
それが誰しもが知ってる丹波哲朗だっても同じだ。
なに片手間で適当に報じとんねん。一番失礼だっつうの。
0393デフォルトの名無しさん
2006/09/27(水) 22:02:46今日亡くなった他の人たちも含め、ご冥福をお祈りします。
0394デフォルトの名無しさん
2006/09/28(木) 00:45:10いや、その理論はおかしい。
0395デフォルトの名無しさん
2006/09/28(木) 01:33:580396デフォルトの名無しさん
2006/09/28(木) 01:35:02詳しく...
0397デフォルトの名無しさん
2006/09/28(木) 05:56:22「善人ぶるために人の死を利用している」としか思えないよね。
「今この理由に乗っかる限り、正義の側に立ったまま堂々と他人を罵倒できる!
どんなに口汚く罵ってもすべては悪を懲らしめる行為になる! すげー! さっそく参加だ!」
という感じなんだろうね。
0398デフォルトの名無しさん
2006/09/28(木) 07:55:300400デフォルトの名無しさん
2006/09/28(木) 10:41:350401デフォルトの名無しさん
2006/09/28(木) 12:12:500402デフォルトの名無しさん
2006/09/28(木) 12:22:07「○○でご尽力なさった、って書け」ってことが引っかかるんかなぁ。
尽力した実績が無いとご冥福を祈れないのかよ?みたいなことを言いたいんじゃないのかな。
0403デフォルトの名無しさん
2006/09/28(木) 12:57:23冥福を祈れない ってどこに書いてるの?
0404デフォルトの名無しさん
2006/09/28(木) 13:13:19想像して言っただけだよ。気にするな。
0405デフォルトの名無しさん
2006/09/28(木) 13:49:49口論・議論板でやってくれ。
0406デフォルトの名無しさん
2006/09/28(木) 18:00:520407デフォルトの名無しさん
2006/09/28(木) 18:07:01口論・議論板でやってくれ。
0408デフォルトの名無しさん
2006/09/28(木) 18:15:020409デフォルトの名無しさん
2006/09/28(木) 18:26:16ナムナム(-人-)
0410デフォルトの名無しさん
2006/09/28(木) 18:53:40それ以前におまえの抜粋の仕方がわけわからんが。
0411デフォルトの名無しさん
2006/09/28(木) 19:02:37ナムナム(-人-)
0412デフォルトの名無しさん
2006/09/28(木) 19:12:040413デフォルトの名無しさん
2006/09/28(木) 19:14:10お喜びになっている事でしょう。
0414デフォルトの名無しさん
2006/09/28(木) 19:19:12ナムナム(-人-)
0415デフォルトの名無しさん
2006/09/28(木) 19:52:020416デフォルトの名無しさん
2006/09/28(木) 20:14:480417デフォルトの名無しさん
2006/09/28(木) 20:26:54スクリプトあったらカッコイイのになあ
0418デフォルトの名無しさん
2006/09/28(木) 21:01:160419デフォルトの名無しさん
2006/09/28(木) 21:02:330420デフォルトの名無しさん
2006/09/28(木) 21:42:140421デフォルトの名無しさん
2006/09/28(木) 23:27:41以下は調べた上での僕の理解です。参考になれば。
> $VERSION = '1.87';
# ExtUtils::MakeMaker に食わせるバージョン文字列
> $VERSION = eval $VERSION;
# $VERSION を数値化 (警告回避のため)
our を使っていないのは、これらのモジュールが後方互換性を必要としているからだと思います
0422デフォルトの名無しさん
2006/09/28(木) 23:29:22aaabbbccc
aaabbbccc
aaabbbccc
......
と適当なデータが入っているファイルから
3行ごとに(絶対に3の倍数にはなっています)
ahoaho0.txt
ahoaho1.txt
ahoaho2.txt
.....
というような連続したファイルを出力したいのですが
どのように書けばできますでしょうか・・・
今現在ファイル名が連続で作成できず参っています・・・
0423デフォルトの名無しさん
2006/09/28(木) 23:55:33my $base = 'ahoaho';
my $num = 0;
として、
$filename = "$base$num.txt"
したりとか$num++したりとか。
0424デフォルトの名無しさん
2006/09/29(金) 08:05:25「3行ごと」の意味を読み違えてるかも知れんけど
#!/usr/bin/perl -w
use strict;
my $in_file = './in.txt';
my $format = './ahoaho%d.txt';
my $lines = 3;
open my $in_fh, '<', $in_file or die $!;
my $out_file = '';
my $out_fh;
{
local $_;
while (<$in_fh>) {
my $current = sprintf $format, ($. - 1) / $lines;
$current eq $out_file
or open $out_fh, '>', $out_file = $current or die $!;
print $out_fh $_;
}
}
__END__
0425デフォルトの名無しさん
2006/09/29(金) 09:36:000426デフォルトの名無しさん
2006/09/29(金) 10:17:20そういうタイファイルハンドルを作ればできそうだな。やったことはないが。
0427デフォルトの名無しさん
2006/09/29(金) 11:01:14IO::Teeが使えるかもしれない。
ttp://search.cpan.org/~kenshan/IO-Tee/
0428デフォルトの名無しさん
2006/09/29(金) 14:44:01ゴテゴテした完成品スクリプトで無駄に行数使うのはリクに答えるスレの方でやってくれよ
0429デフォルトの名無しさん
2006/09/29(金) 15:19:470430デフォルトの名無しさん
2006/09/29(金) 15:48:57$_をlocalizeするときはlocal *_にしないと危険だそうだ(perlsub参照)
0431デフォルトの名無しさん
2006/09/29(金) 17:00:32どうにもならなくて困っています。perlの実力は、
Perlプログラミング講座 http://www.site-cooler.com/kwl/perl/
の内容なら大体知っている程度で、CPANだとかモジュールだとかは
よく分かっていない感じです。
Plaggerのソースを読んで自分でいろいろできるレベルに
なりたいのですが、どんな本(OR サイト)を読めば
いいでしょうか。やっぱりオライリー?
0432デフォルトの名無しさん
2006/09/29(金) 17:07:43Plaggerは別にperlが分からなくても使えるだろ。
0433デフォルトの名無しさん
2006/09/29(金) 17:40:16> Plaggerのソースを読んで自分でいろいろできるレベルに
> なりたいのですが、どんな本(OR サイト)を読めば
> いいでしょうか。やっぱりオライリー?
添付ドキュメント
0434デフォルトの名無しさん
2006/09/29(金) 18:02:01分かってもPlaggerで何ができるのかよく分からなくて、ウェブ上の情報も
perl使える人向けに書かれているのが多かったんでやっぱりソース嫁って
ことなのかなとか思ったりしたんですが…
もうちょっとあさってみます。
0435デフォルトの名無しさん
2006/09/29(金) 18:37:340436デフォルトの名無しさん
2006/09/29(金) 18:57:050437デフォルトの名無しさん
2006/09/29(金) 19:00:06DBIは楽だなー。
PostgreSQL にサクッと接続できてあっさり select できて感動した。
0438デフォルトの名無しさん
2006/09/29(金) 22:38:01すみません、今までどうやって接続してたんですか?
他言語?
0439デフォルトの名無しさん
2006/09/30(土) 00:14:230440デフォルトの名無しさん
2006/09/30(土) 01:21:55今まで Perl 使わずにCとかで Oracle とか昔の Informix とか使ってましたが、
ブランクが何年もあります。
0441デフォルトの名無しさん
2006/09/30(土) 04:35:52最近勉強を始めて、お手本となるソースを探してます。
0442デフォルトの名無しさん
2006/09/30(土) 04:42:55/usr/lib/perl5 ディレクトリ以下。
0443デフォルトの名無しさん
2006/09/30(土) 05:57:39そっか、Encode.pmってNick Ing-Simmonsが作ったのか。勉強になった。
0444デフォルトの名無しさん
2006/09/30(土) 09:06:26CPAN
0445デフォルトの名無しさん
2006/09/30(土) 10:53:410446デフォルトの名無しさん
2006/09/30(土) 12:53:19> どこか、perlで書かれたソースを大量に読めるところないでしょうか。
> 最近勉強を始めて、お手本となるソースを探してます。
Perlの配布パッケージ
0447デフォルトの名無しさん
2006/09/30(土) 20:50:050449デフォルトの名無しさん
2006/09/30(土) 22:39:13> スゴス! IO::Teeでできました! 誠にありがとうございました。
礼はIO::Teeの作者に。
0450425
2006/10/01(日) 01:31:490451デフォルトの名無しさん
2006/10/01(日) 02:08:53そらCで叩くのに比べればめちゃくちゃ楽だわな。
気が向いたらDBIx::Classとかに手を出すのもいいかもね。
0452デフォルトの名無しさん
2006/10/01(日) 18:44:29やっと一つ目のCGIができたのでローカル鯖立ててCGI試そうとおもったんですが
何回インストールしなおしてもエラーが出て困ってます。
どなたかCGI試すのに最適な方法知らないでしょうか
スレ違いだと思いますが、ここで聞いたほうがいいかと思ったので。
0453デフォルトの名無しさん
2006/10/01(日) 18:48:49> 何回インストールしなおしてもエラーが出て困ってます
とだけ書いてるようじゃ相手にされないだろうから出直してこい
0454デフォルトの名無しさん
2006/10/01(日) 19:38:30PHP板に行った方がいいと思うよ。
0455デフォルトの名無しさん
2006/10/01(日) 19:40:33KENTでよければ
自宅マシンWWWサーバ化計画
http://www.kent-web.com/www/
0456デフォルトの名無しさん
2006/10/01(日) 19:52:12>perlでCGIの勉強をしているのですが
おしい。
「CGIでPerlの勉強をしているのですが」
って書けばせめて二行目あたりまでは読んでもらえたのに。
0457デフォルトの名無しさん
2006/10/01(日) 19:55:461) perlやCGIがどうこうよりまずは、>>1の書き込みをよく読み、理解しろ。
2) おまえは「車が壊れました」だけでどこが壊れたのか分かるのか?
エスパーじゃない限り他人はおまえが伝えなければ
何を使って、どういう手順で行い、結果がどうなり、どんなエラーメッセージが出た
かなんてわからないんだぞ
0458デフォルトの名無しさん
2006/10/01(日) 20:01:150459デフォルトの名無しさん
2006/10/01(日) 20:13:24|
∩___∩ |
| ノ _, ,_ ヽ (( | プラプラ
/ ● ● | (=)
| ( _●_) ミ _ (⌒) J ))
彡、 |∪| ノ
⊂⌒ヽ / ヽノ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
0460デフォルトの名無しさん
2006/10/01(日) 20:25:22他の方法はないかと聞いたんですが・・・
0461デフォルトの名無しさん
2006/10/01(日) 20:26:53動くかどうかわからんコードなら、winならコマンドプロンプトから 「perl hogehoge.cgi」 とかで試してみれば?
0462デフォルトの名無しさん
2006/10/01(日) 20:39:43せめて「ここで聞いたほうがいいかと思った」理由を書けば良いのに…
0463デフォルトの名無しさん
2006/10/01(日) 20:43:15>他の方法はないかと聞いたんですが・・・
ってことは、「ローカルで鯖立てる以外にCGIを試す方法」を聞いてるわけ?
0464デフォルトの名無しさん
2006/10/01(日) 20:48:21>CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
>CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
>(WEBプログラミング板 http://pc8.2ch.net/php/ )
1 を読めばここで質問するのが全く妥当ではないことだけは判るはず。
0465デフォルトの名無しさん
2006/10/01(日) 21:24:40ってして、hogehoge.html をブラウザで開くとか。
0466デフォルトの名無しさん
2006/10/01(日) 21:36:07他の方法でCGIを試す方法はないかという話であれば
ますますperlスレと関係ないよね
0467デフォルトの名無しさん
2006/10/02(月) 14:31:380468デフォルトの名無しさん
2006/10/02(月) 15:07:390469デフォルトの名無しさん
2006/10/02(月) 16:08:540470デフォルトの名無しさん
2006/10/02(月) 17:10:050471デフォルトの名無しさん
2006/10/02(月) 17:23:55適切にクォートしてくれる関数はありますか?
0472デフォルトの名無しさん
2006/10/02(月) 17:29:560473デフォルトの名無しさん
2006/10/02(月) 17:43:07quotemeta
もしくは/\Q$unko\E/
0475デフォルトの名無しさん
2006/10/02(月) 21:06:38> >>355
> 以下は調べた上での僕の理解です。参考になれば。
> > $VERSION = '1.87';
> # ExtUtils::MakeMaker に食わせるバージョン文字列
> > $VERSION = eval $VERSION;
> # $VERSION を数値化 (警告回避のため)
> our を使っていないのは、これらのモジュールが後方互換性を必要としているからだと思います
回答ありがとうございます。
・警告なんて出ます?
とか、
・最初から$VERSION = 1.87;じゃだめなの?
とか疑問が湧いてきますです。。。
0476421
2006/10/02(月) 22:20:29perldoc perlmodstyle にちょろちょろと関連情報が。
> ・最初から$VERSION = 1.87;じゃだめなの?
$VERSION = 5.8.8; # bareword になる。なので、
$VERSION = '5.9.3'; # とする必要がある。従ってどちらに転んでも、
> ・警告なんて出ます?
出ちゃうんです。
0477デフォルトの名無しさん
2006/10/02(月) 23:01:271.87は浮動小数点数(つまり"1.87"の近似値)だから、じゃないのか。
0478デフォルトの名無しさん
2006/10/02(月) 23:13:300479デフォルトの名無しさん
2006/10/03(火) 00:50:00なんで疑問に思ったなら自分で確認しないの?
他人に何でもかんでもやってもらわないとダメなの?
0480デフォルトの名無しさん
2006/10/03(火) 09:27:20数字で書いてあるけど、cvsが埋め込むバージョン文字列から適当に
拾い出すプログラムが書いてあるのとかある。
で次の行のevalでそれが実行される。こうしておけばなんかうまくいかな
かったときもバージョンが設定されないぐらいで一応動くので便利。
よく見かけるのでそういうテンプレなんじゃないか?
0481デフォルトの名無しさん
2006/10/03(火) 19:35:43サイトでのコピペなど適等につくってttest.plを名前を付けて保存しました。
ttest.plをクリックすると一瞬だけDOSウィンドウが出て消えてしまいます。
何が出力されたのかよくわからないのですが、もっとじっくり出力内容を
プレビューするにはどうしたらよいのでしょうか?
ActivePerlとhtttpは入れてローカルで掲示板などは動かしています。
ttest.pl実行時はhtttpは起動してませんでした。
個人的にはperlで実行したいのですが
cgiにしてローカルサーバーから見たほうがいいのでしょうか
よろしくおねがいします。
これはttest.plのソースです。
#!/usr/bin/perl
$name = "1";
print "$name test\n";
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>htmlのタグあああああ</P>\n";
print "</HTML>\n";
exit(0);
0482デフォルトの名無しさん
2006/10/03(火) 19:40:09exit(0);
0483デフォルトの名無しさん
2006/10/03(火) 21:09:390484デフォルトの名無しさん
2006/10/03(火) 21:34:480485デフォルトの名無しさん
2006/10/03(火) 21:44:140486デフォルトの名無しさん
2006/10/03(火) 22:24:200487デフォルトの名無しさん
2006/10/03(火) 22:30:390488デフォルトの名無しさん
2006/10/03(火) 22:43:270489デフォルトの名無しさん
2006/10/03(火) 23:20:430490デフォルトの名無しさん
2006/10/03(火) 23:29:38中身は↓
perl ttest.pl
pause
0491デフォルトの名無しさん
2006/10/04(水) 00:08:51---perl.bat---
@echo off
"C:\Perl\bin\perl" %1
echo; & echo ---perl end---
pause>nul
0492デフォルトの名無しさん
2006/10/04(水) 07:21:49>>482 ウィンドウがすぐ消えず表示できました
>>483 こっちは482みたいにenter押しても消えないしばつボタンを押すと警告が出ました。
これら482や483の機能を望んでいました。
>>484 何回か試しましたが難しかったです上2つで良かったです
>>485 Exactly(そのとおりでございます)
>>486 いずれやってみたいことですがよくわからないので当分は`pause`;とsleep 100;を併用してみようと思います。
>>487 コンソールとかわからないです。とりあえず動いてるところがみたかったです
>>488 Windows上からやりたいです。
>>489 DOSプロンプトでC:\>WINDOWSからC:\>perlにするやり方がよくわからなくて質問してしまいました
>>490 やってみました。同名で作り続けるなら便利で、複数起動したい時batファイルつかえそう。知識的に役に立ちました。
>>491 batファイルでしょうか。perlエディタから同じ要領でデバックが見れたらとっても助かりますね。
初心者すぎて相手されないと思ってたらたくさんレスがついて質問回答以外にもいろいろ勉強になりました。
レスくれた方々、ありがとうございました
0493デフォルトの名無しさん
2006/10/04(水) 09:32:340494デフォルトの名無しさん
2006/10/04(水) 10:54:34スタートメニューのプログラム-アクセサリ-コマンドプロンプト。
よく使うならアイコンをDnDしてクイック起動ツールバーにでもコピーしとく。
** カレントワーキングディレクトリを変更する
「cd /d 」と打って、次にスクリプトのあるフォルダをコマンドプロンプトの窓にDnDする。
フォルダのパスが行の続きに書かれるから、そこでEnterを押す。
** スクリプトを起動する
「perl なんとか.pl」と打って、スクリプトを起動する。
出力が多すぎて読めないときはパイプやリダイレクトを活用する。
詳しくは「コマンドプロンプト」でぐぐれ。
0495デフォルトの名無しさん
2006/10/04(水) 14:04:11vi
0496デフォルトの名無しさん
2006/10/04(水) 14:23:50Open Perl IDE
http://open-perl-ide.sourceforge.net/
0497デフォルトの名無しさん
2006/10/04(水) 15:07:55スクショ見る限り、よくできてまんなー
0498デフォルトの名無しさん
2006/10/04(水) 20:01:29HTML::Selector::XPathとか、
ありえないくらい頭悪い名前なんですが、
Perlではこういうのが普通なんですか?
0499デフォルトの名無しさん
2006/10/04(水) 20:56:09あれってやっぱり変なの?
なんでこの機能にこの名前? と困惑してたんだが。
ほかに、WWWとWebServiceとかもごっちゃだね。
0500デフォルトの名無しさん
2006/10/04(水) 21:06:17Acme にジョークモジュールとか、そういう慣習はあるみたいだけど。
0501デフォルトの名無しさん
2006/10/04(水) 21:12:51Perl Best Practice参照。
0502デフォルトの名無しさん
2006/10/04(水) 21:35:160503デフォルトの名無しさん
2006/10/04(水) 22:11:23> ほかに、WWWとWebServiceとかもごっちゃだね。
WebServiceはAPI(WebService)が用意されているのを利用している感じ。
WWWはHTMLをゴリゴリparseしている感じ。
0504デフォルトの名無しさん
2006/10/04(水) 22:20:190505デフォルトの名無しさん
2006/10/04(水) 22:27:49> perldoc perlmodstyle にちょろちょろと関連情報が。
お〜、ありがとうございます!
> > ・警告なんて出ます?
> 出ちゃうんです。
それが出ないんです。
% cat test.pl
use strict;
use warnings;
our $VERSION = 5.8.8;
print $VERSION;
% perl -cw test.pl
test.pl syntax OK
ただし、$VERSIONはNVではなくてPVMG(v-string)になりました。
% perl test.pl | dump
00000000 0508 08 ...
------------------------------
our $VERSION = 5.8.8;
としたときと、
our $VERSION = '5.8.8';
$VERSION = eval $VERSION;
としたときの$VERSIONの内部構造を比較すると、”全く同じ”でした。
------------------------------
やっぱり
> ・最初から$VERSION = 1.87;じゃだめなの?
という疑問は消えません。。。
>>477, >>480
そうかもしれない。
などとと思っていたのですが、perldoc perlmodstyleを読んでいて本当の理由がわかりました。
NVとPVの両方を設定させるのがミソだったようです。続く↓
0506デフォルトの名無しさん
2006/10/04(水) 22:32:400507デフォルトの名無しさん
2006/10/04(水) 22:35:48αバージョンの扱いに問題があるからのようです。
Perlでは元々言語仕様として、数値に_(アンダースコア)を入れることが出来ます。
要するに、Numeric Versionsでαバージョンを示す場合、
1.12_01
のように書きますが、数値として書いてしまうと
1.1201
と”全く同じ意味”になります。
ですので、1.012.001のつもりで1.12_01と書いても、1.120と解釈されてしまい、
αバージョンの情報が欠けてしまいます。末尾にその様子を記載しておきます。
すっきりしました。ありがとうございました。
our $VERSION = 1.12_01;
print Dump($VERSION);
# SV = NV(0x68b3a0) at 0x67ee50
# REFCNT = 1
# FLAGS = (NOK,pNOK)
# NV = 1.1201
our $VERSION = '1.12_01';
$VERSION = eval $VERSION;
print Dump($VERSION);
# SV = PVNV(0x664910) at 0x67ee50
# REFCNT = 1
# FLAGS = (NOK,pNOK)
# IV = 0
# NV = 1.1201
# PV = 0x675b00 "1.12_01"\0
# CUR = 7
# LEN = 8
0508デフォルトの名無しさん
2006/10/04(水) 22:38:00> 命名規則は確かに無茶苦茶だと思う。
歴史的理由ってやつでむちゃくちゃな部分と、
規則とか知ったこっちゃないってんで自分勝手にやっててむちゃくちゃな部分と、
規則を作って、それに沿ってやろうとしている一部の人たち、
って感じ。
0509421
2006/10/04(水) 22:54:19> お〜、ありがとうございます!
どういたしまして。
> ただし、$VERSIONはNVではなくてPVMG(v-string)になりました。
v-string なら数値扱いすると警告出るじゃないですか。w
>>507
それは CPAN.pm にそのモジュールなりを最新版として扱わせないようにする記法ざんすね。
0510デフォルトの名無しさん
2006/10/04(水) 23:23:27> > ただし、$VERSIONはNVではなくてPVMG(v-string)になりました。
> v-string なら数値扱いすると警告出るじゃないですか。w
アッー!↓こういうことですね!
% perl -Mwarnings -e '$VERSION=5.8.8; 5.8 < $VERSION'
Useless use of numeric lt (<) in void context at -e line 1.
Argument "^E^H^H" isn't numeric in numeric lt (<) at -e line 1.
すみません。うっかり比較のことを忘れてました(_ _(--;(_ _(--; ペコペコ
0511デフォルトの名無しさん
2006/10/05(木) 00:33:460512デフォルトの名無しさん
2006/10/07(土) 10:57:58IPアドレスから調べるのにはどうしたら良いでしょうか。
nbnameだと取得出来る確率が低く今は対象IPにpingして
arpテーブルにキャッシュされた値を取得するという力業でやってます。
外部コマンドを使わずに実現できればと思います。
0513デフォルトの名無しさん
2006/10/07(土) 12:09:20目的は知らないけど、そのやり方でまずい理由も見当たらない。
どうして外部コマンドを使いたくないのかもわからない。
しかしその用途なら Net::ARP とかその辺でどうにかならんか?
0514デフォルトの名無しさん
2006/10/07(土) 16:52:07レスありがとうございます。
forkのコストとあまり美しくないと感じたからです。
で、仰るとおりNet::ARPで解決しました。
Net::ARP::arp_lookup(br0 => $ip, $mac_address);
書き込む前にもNet::ARPは試していたのですがpodに書いてある例
Net::ARP::arp_lookup($dev,"192.168.1.1",$mac);
の$devって何だよ・・・ってナチュラルスルーしていましたーー)
0515デフォルトの名無しさん
2006/10/08(日) 12:02:24エラーは出ないのですが、期待する動作をしません(変化なし)(^^;
教えてください、オナガイシマス
map { $x = $_ ; $x = lc $x ; rename($_, $x);} glob;
0516デフォルトの名無しさん
2006/10/08(日) 12:04:09Windowsではファイルの大文字小文字は区別されない。
敢えてやりたいならテンポラリファイルを使うしかないとオモ。
0517デフォルトの名無しさん
2006/10/08(日) 12:10:260518デフォルトの名無しさん
2006/10/08(日) 12:30:07>>516
どうもです
具体的なコード教えて頂けないでしょうか
_(--)_
0519デフォルトの名無しさん
2006/10/08(日) 13:17:46windowsはよく知らないがrenameの戻り値みてないんだからエラーになりようがないんじゃないか。
0520デフォルトの名無しさん
2006/10/08(日) 14:32:00これでうまく行ったぞ?
これでうまく行かないならファイルの指定の仕方が間違ってる可能性も
あと俺が使ってるファイラだと更新ボタンがうまく働いてなくてちょっとはまったorz
リネームされたかどうかの確認はdirコマンドとか使うのをお勧めする
0521デフォルトの名無しさん
2006/10/08(日) 15:12:49参考書とか参考サイトを見ると
「サブルーチンは指定した返り値を返す」
「指定を省略した場合は最後に定義した値が返り値」とのことです。
では、途中で代入した変数は無かったことになるんでしょうか?
以下のスクリプトの場合、$dy[($dyg+3)] = $dicenumber;だけが
返り値になって、$dfaceや$shuは無視されるんでしょうか?
sub dicego {
$dquan = $dn[($dng+1)];
$dface = $dn[($dng+2)];
$syu = $dn[($dng+3)];
&dice;
$dy[($dyg+3)] = $dicenumber;
}
0522デフォルトの名無しさん
2006/10/08(日) 15:28:57君はまずサブルーチンの値と変数の違いを理解するところからはじめたほうがいい。
0523デフォルトの名無しさん
2006/10/08(日) 15:32:53ttp://www.tohoho-web.com/wwwperl2.htm#return
0524デフォルトの名無しさん
2006/10/08(日) 15:38:57サンクス
っていうか、漏れもそれ試してたんだけど
ファイル名が変わっていないかと思ってた、出来てたんだアハハ
0525デフォルトの名無しさん
2006/10/08(日) 15:46:370526デフォルトの名無しさん
2006/10/08(日) 16:10:410527デフォルトの名無しさん
2006/10/08(日) 16:14:310528デフォルトの名無しさん
2006/10/08(日) 18:26:12教えて頂けないでしょうか。
@target_name = {"A HREF", "a href", "IMAGE", "image"};
行中に単語の有無を判別したいのですが・・・・
宜しくオナガイシマス。
0529デフォルトの名無しさん
2006/10/08(日) 19:00:57> @target_name = {"A HREF", "a href", "IMAGE", "image"};
@target_name = ("A HREF", "a href", "IMAGE", "image"); # 上の行はこうだと仮定して
foreach my $word (@target_name) {
$line =~ /\Q$word\E/;
}
0530デフォルトの名無しさん
2006/10/08(日) 19:03:04何も生み出しませんね。
0532デフォルトの名無しさん
2006/10/08(日) 19:13:490533デフォルトの名無しさん
2006/10/08(日) 19:17:38っ search.cpan.org
0534デフォルトの名無しさん
2006/10/08(日) 20:14:33>>152です
>>529さんサンクスです
お蔭様でやりたい事が少し進みました
参考に↓の様に書いたのですが問題があります
やりたいことは、ファイルを開いて@target_nameの単語が出たら同じファイルの
その行を全て小文字に変換したいのですが、書込み処理が巧くいきません
なにとぞ書込み方法を教えてください。
それからもう一つ、↓のファイルはfoo.htmを開いていますが
これを、あるフォルダ配下の全てのファイルに同じ処理をしたいのですが
どうしたら出来ますでしょうか?
欲を言えばそのフォルダ、配下のフォルダ配下のファイルにも再帰的に全て
同じ処理が出来れば最高なのですが。
@target_name = ("A HREF", "a href", "IMAGE", "image");
open ( FH , " +< foo.htm" );
while(<FH>)
{
foreach my $word (@target_name)
{
$find = index ($_, $word);
if($find > -1)
{
print FH lc $_; #ここが巧くいかない(^^;
}
}
}
close (FH) ;
0535デフォルトの名無しさん
2006/10/08(日) 20:25:23tell seek
0537デフォルトの名無しさん
2006/10/08(日) 22:47:38昔自分で書いたコード。いくらなんでもこれはあんまりだと思った。
0538デフォルトの名無しさん
2006/10/09(月) 01:41:25>その行を全て小文字に変換したいのですが
それだと、アルト属性やアドレスとかファイル名が含まれていた場合ムチャクチャになっちゃわない?
取りあえず、"A HREF" と "IMAGE" が含まれていたら、それだけを小文字に変換してみるテスト。
後は、引数から個別にファイルに書き出す部分を追加してくれ。
foreach (<>) {
s/A¥ HREF/a¥ hrer/ig;
s/IMAGE/image/ig;
print;
}
0539デフォルトの名無しさん
2006/10/09(月) 01:54:09>それだと、アルト属性や
オルト
0540デフォルトの名無しさん
2006/10/09(月) 02:25:450541デフォルトの名無しさん
2006/10/09(月) 02:35:36>それだと、アルト属性や
オルタ
0542538
2006/10/09(月) 02:43:46でも、間違いを指摘してるって事は
アルトでも意味が通じてるって事で
よかですね?
0543デフォルトの名無しさん
2006/10/09(月) 02:48:26アホか。
0544デフォルトの名無しさん
2006/10/09(月) 02:55:30一生そう思ってろ
0545デフォルトの名無しさん
2006/10/09(月) 03:14:340546デフォルトの名無しさん
2006/10/09(月) 03:23:470547デフォルトの名無しさん
2006/10/09(月) 04:00:00アルト属性がなんたらかんたらは置いといてw
その仕様だったら、もうワンライナーでいいんじゃね?
perl -p -i.bak -e "s/A¥ HREF/a¥ href/ig; s/IMAGE/image/ig" *.html
>>534の希望に叶うかどうか知らんが。
0548デフォルトの名無しさん
2006/10/09(月) 05:10:05(つд⊂)ゴシゴシ
(;゚д゚)
(つд⊂)ゴシゴシ
_, ._
(;゚ Д゚) アルト…?!
0549デフォルトの名無しさん
2006/10/09(月) 07:14:04たしかにアルト属性プッ だがな。
どう見ても>>542は、擬似餌(>>538の騙り)だろ。
藻前ら、堪え性ないな。
>>547
それで十分だと思われ。
デレクトリィを再帰的に処理する必要があるか
疑問だ。場合によれば別のコマンドかませてもいいし。
よく判らんのが、アルト君の指摘した
>その行を全て小文字に変換したいのですが
だけだな。ほんとに全部小文字にしていいの?
0550528
2006/10/09(月) 07:41:22>>それだと、アルト属性やアドレスとかファイル名が含まれていた場合ムチャクチャになっちゃわない?
。゜゜(´□`。)°゜。ワーン!! 説明不足でした勘違いされてしまったお
むしろ属性やアドレス、ファイル名を小文字に変換することが目的なのです。
例
<p><img border="0" src="image/AM_A01-1.GIF"></p>
↓
<p><img border="0" src="image/am_a01-1.gif"></p>
<a href="15F_A_E1.HTM#01">問題へ</A>
↓
<a href="15f_a_e1.htm#01">問題へ</A>
こんな風に変換したいのですが・・・・・・
実はとある出版社から販売されている受験参考書の付録のCDに
年度毎の過去問題集及び解答がhtm形式で納められています、そのファイルの内容
ファイル名が出版社の意図することかどうかは分からないのですが?
htmファイルの中では、属性やアドレス、ファイル名を大文字小文字混在で記載して
実際のファイル名は大文字で記述していますPCからそのCDを開くことは全然問題ないのですが、
何処にいても携帯で見えるように、自鯖に転送したのですが上記の問題で
リンクが巧く取れて見えません、
そこでファイル名は全て小文字に変換して
ファイル内でA HREF", "a href", "IMAGE", "image"が含まれる行があったら
その行を全て小文字に変換してしまい、するとおのずと
オルト属性やアドレス、ファイル名も小文字に変換できます、それが目的なのです、
しかもそのファイル数が数百個もあります・・・・・・
0551デフォルトの名無しさん
2006/10/09(月) 07:49:27目的がそれなら、HTML書き換えるよりmod_rewriteでto_lower使った方が楽かも。
自鯖だし。
0552528
2006/10/09(月) 08:04:13サンクスです
>>mod_rewriteでto_lower使った方が楽かも。
そうなりますとapacheのことになりスレ違いになので控えさせていただきたく思います
perlの威力で解決できないものでしょうか?
宜しくお願いいたします。
0553デフォルトの名無しさん
2006/10/09(月) 08:37:32foreach (<>) {
$hoge = $_;
if ( grep( /A¥ HREF|IMAGE/i, $hoge ) ) {
$hoge =~ s/([A-Z])/¥l$1/ig;
}
print $hoge;
}
これを、てけとーなスクリプトファイルして
find でれくとりぃ -iname *.html -print | てけとーなスクリプトファイル
すりゃいいじゃね?
試してないから保証無し。
0554デフォルトの名無しさん
2006/10/09(月) 08:42:11#!/usr/bin/perl -i.bak
としていて。
0555デフォルトの名無しさん
2006/10/09(月) 08:46:590556デフォルトの名無しさん
2006/10/09(月) 09:22:040557デフォルトの名無しさん
2006/10/09(月) 09:24:350558528
2006/10/09(月) 09:28:18とりあえず
perl hoge.pl -iname *.html -print |
これだとコマンドの構文が誤っていますとなったので
perl hoge.pl -iname foo.html -print
としたら
コンソール画面に出力されますが(巧く変換できてるっぽい?)、ファイルに書込みできてないのですが・・・・・
というかfoo.htmlの中身は空にナリマスタ
0559デフォルトの名無しさん
2006/10/09(月) 10:02:17#!/usr/bin/perl -pi.bak
if ( grep( /A¥ HREF|IMAGE/i, $_ ) ) {
$_ =~ s/([A-Z])/¥l$1/ig;
}
これを適当なスクリプト名で保存
find ~/html -iname *.html -print | xargs 適当なスクリプト名
~/html <ーこれは、処理したいフォルダ名を指定
この場合ユーザーホーム直下のhtmlデレクトリィってことね。
適当なスクリプト名は、実行権限を与える事。
0560デフォルトの名無しさん
2006/10/09(月) 10:38:59上記の *.html -> "*.html" クォートした方がよさげだね
0561デフォルトの名無しさん
2006/10/09(月) 10:44:13[アルト]Perlについての質問箱 28箱目[Alt]
http://pc8.2ch.net/test/read.cgi/tech/1157874614
0562デフォルトの名無しさん
2006/10/09(月) 10:56:09>しかしファイルはSJISだったので大変なことに... とかならなければいいがな
あるあるー
0563デフォルトの名無しさん
2006/10/09(月) 11:12:32仕様後出しでやる気なくなった。
0564デフォルトの名無しさん
2006/10/09(月) 11:18:53お前は答えてないだろw
0565デフォルトの名無しさん
2006/10/09(月) 11:21:31>年度毎の過去問題集及び解答が
sjisの確率高いね。wktk
0566デフォルトの名無しさん
2006/10/09(月) 11:23:020567デフォルトの名無しさん
2006/10/09(月) 11:26:08教えてください。
>>567市ね
0568デフォルトの名無しさん
2006/10/09(月) 11:27:29自分を大切にしろ。
0569ヽ(´ー`)ノ ◆.ogCuANUcE
2006/10/09(月) 12:03:21もしくは
use strict;
use warnings;
use HTML::Parser;
sub start_h
{
my ($tagname, $attr) = @_;
$_ = lc $_ for values(%$attr);
print "<$tagname";
while (my ($k, $v) = each(%$attr)) { print " $k=\"$v\"" }
print ">";
}
my $p = HTML::Parser->new(handlers => {default => [sub {print $_[0]}, 'text'],
start => [\&start_h, 'tagname, attr']});
$p->parse_file($_) for @HTMLFILES;
0570528
2006/10/09(月) 12:25:24二つも書いてくれてありが�d
'image'は、内部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません
Global symbol "@HTMLFILES" requires explicit package name at foo.pl line 20
Excution of foo.pl aborted due to complation erroes.
両方だめデスタ
ファイルハンドルを読書き両方出来るように設定して↓の様にしてみたが
元ファイル×2倍になってしまう(^^;
後半のファイルは大文字小文字の変換は巧く行っているのだが、
ファイルが2倍っていうのはいかがなものか・・・・・・・・
open (FH, '+<foo.html')or die $!;
foreach (<FH>)
{
if ( grep( /A\ HREF|IMAGE/i, $_ ) )
{
$_ =~ s/([A-Z])/\l$1/ig;
}
print FH $_;
}
close FH;
0571デフォルトの名無しさん
2006/10/09(月) 12:37:45…。
0572デフォルトの名無しさん
2006/10/09(月) 12:45:52氏ぬの?
0573528
2006/10/09(月) 13:44:07遂に変換、書込みまでデキマスタ
ちょっと照れくさいけどコードを書きます
ところで、これを再帰的(再帰的でなくても同じ階層のフォルダ内)だけでも
まとめて変換するにはどうしたらよいでしょうか?
open (FH, '<aa.htm')or die $!;
@foo = ();
#my @hoge = <FH>;
while(<FH>)
{
if ( grep( /A\ HREF|IMAGE/i, $_ ) )
{
$_ =~ s/([A-Z])/\l$1/ig;
}
push @foo, "$_";
}
close FH;
open (OUT, '>aa.htm')or die $!;
print OUT @foo;
close OUT;
0574デフォルトの名無しさん
2006/10/09(月) 13:45:50for i in `find . -name '*'`;do
hoge.pl $i
fone
0575デフォルトの名無しさん
2006/10/09(月) 13:58:55map{`perl hoge.pl "$_"` if(-f $_);} glob("*");
あれ?別ファイルにする意味なくね?って思ったけどどうでもいいや
0576デフォルトの名無しさん
2006/10/09(月) 14:07:39なんか問題あるの?
0577デフォルトの名無しさん
2006/10/09(月) 14:09:520578528
2006/10/09(月) 14:12:00サンクスですそれってシェルスクリプトってやつですか、外していたらごめんなさい
使い方がよく分からないっす(^^;
>>575さん
どうもです、mapで同じファイルの中で書こうとしてたら、おぞましい
コードになりかけてました(^^;
頭がよくないので二つに分けたほうが、分かりやすいです
ところで
map{`perl hoge.pl "$_"` if(-f $_);} glob("*");
この場合変換したいファイル名は*で渡しているんですよね?
だとしたら>>573のコードの
open (FH, '<aa.htm')or die $!;
open (OUT, '>aa.htm')or die $!;
の部分を書直さないといけないですよね?
>>576さん
どうもです、findの使い方余りよく分からないんです、すみません。
0579デフォルトの名無しさん
2006/10/09(月) 14:39:08$mydir = $ARGV[0];#適当に
open(FIND ,"find $mydir -iname ¥"*.html¥" -print|");# || 氏ね;
@html = <FIND>;
chop(@html);
close FIND;
foreach (@html) {
$infile = $_;
open (FH, "<$infile")or die $!;
@foo = ();
while(<FH>) {
if ( grep( /A¥ HREF|IMAGE/i, $_ ) ) {
$_ =~ s/([A-Z])/¥l$1/ig;
}
push @foo, "$_";
}
close FH;
open (OUT, ">$infile")or die $!;#書出すのにinfile
print OUT @foo;
close OUT;
}
exit;
#hoge.pl ~/myhtml
0580デフォルトの名無しさん
2006/10/09(月) 14:53:120581528
2006/10/09(月) 15:26:19サンクスです
$mydir = $ARGV[0];#適当に
$mydirはデレクトリの階層の深さを設定する変数なのでしょうか?
#!/usr/bin/perl
use File::Find;
$mydir = $ARGV[0];
以下同様として実行したら
ファイル名が見つかりません - -INAME
ファイル名が見つかりません - -PRINT
こうなってしまうのですが・・・・・・・・・・
0582デフォルトの名無しさん
2006/10/09(月) 15:48:480583528
2006/10/09(月) 15:51:57つ・・ついに完成シマスタ
U\(●~▽~●)Уイェーイ!
しかしperlって変数の扱いとか実にいい加減なようでも文字処理とかは
やはり強烈なパワーを持ってる事を再確認シマスタ
はじめCで同じことやろうとしたけど、ファイル名の取得の部分であきらめて
perlにしがみついてましたアハハ
最後に一応コード載せときますね(^^;恥ずかしい
@htm = glob("./*.htm");
foreach (@htm)
{
$infile = $_;
open (FH, "<$infile")or die $!;
@foo = ();
while(<FH>)
{
if ( grep( /A\ HREF|IMAGE/i, $_ ) )
{
$_ =~ s/([A-Z])/\l$1/ig;
}
push @foo, "$_";
}
close FH;
open (OUT, ">$infile")or die $!;
print OUT @foo;
close OUT;
}
exit;
0584デフォルトの名無しさん
2006/10/09(月) 17:38:32変な見栄を張るのはやめたほうがいいよ。
0585デフォルトの名無しさん
2006/10/09(月) 18:44:410586デフォルトの名無しさん
2006/10/09(月) 18:51:02なんか知らんが偉い遅れて出てきて必死だな。
0587デフォルトの名無しさん
2006/10/09(月) 18:53:250588ヽ(´ー`)ノ ◆.ogCuANUcE
2006/10/09(月) 19:09:17回答を理解できない上に、後付けで再帰的にしたい、
とまで言い出すとは思わなかった。
0589デフォルトの名無しさん
2006/10/09(月) 19:10:51回答する側の心情的にはクるけどなw
0590sage
2006/10/09(月) 22:01:06#!/usr/bin/perl -w
といれて、terminalから
/aaa/bbb/ccc/test.pl
のように実行するスクリプトの名前を
フルパスで取得する方法はございますか?
print "$ARG[1]¥n"とやってみましたが、
うまくいきませんでした。
使用環境は、OSX10.4.8 + 付属の標準perlです。
0591デフォルトの名無しさん
2006/10/09(月) 22:05:25自分自身を知りたいのかどうか判別つかんが
ご希望は $0 か __FILE__ の事?
0592デフォルトの名無しさん
2006/10/09(月) 22:06:580593デフォルトの名無しさん
2006/10/09(月) 22:07:320594デフォルトの名無しさん
2006/10/09(月) 22:09:120595sage
2006/10/09(月) 22:15:12$0でうまくいきました。
perl歴20年なのですが、Googleで検索しても
正解の$0まで独力ではたどり着きませんでした。
今まで一度も$0を使ったことななかったわけです。
0596デフォルトの名無しさん
2006/10/09(月) 22:26:34変な見栄を張るのはやめたほうがいいよ。
0597デフォルトの名無しさん
2006/10/09(月) 22:29:430598デフォルトの名無しさん
2006/10/09(月) 22:30:06>Larry Wall began work on Perl in 1987, while working as a programmer at Unisys,[4]
>and released version 1.0 to the comp.sources.misc newsgroup on December 18, 1987.
未来人乙。
0599デフォルトの名無しさん
2006/10/09(月) 22:33:21釣りでないのなら今すぐ perldoc perlhist と打鍵した上でご自分の Perl 歴を確認してください。
その上で 20 年と判断されたなら僕に Perl を教えてください。>Larry
0600sage
2006/10/09(月) 22:51:37重ね重ね、正確なご指摘をありがとうございます。
記憶違いでした。私がperlを始めたのは1990年頃で、
秋葉原のコンピュータ店の洋書売り場でO'Reillyの本を
買ったのが始まりでした。16年後もperlで仕事が
続けられるとうれしいです。
0601デフォルトの名無しさん
2006/10/09(月) 23:02:21お前はいったい何をやっていたのだ...
0602デフォルトの名無しさん
2006/10/09(月) 23:10:210603デフォルトの名無しさん
2006/10/09(月) 23:29:270604デフォルトの名無しさん
2006/10/09(月) 23:36:21ラクダ本発売日
- english 1991/1月
- 日本語版 1993/2/28
ソース
ttp://en.wikipedia.org/wiki/Programming_Perl
ttp://examples.oreilly.com/cjkvinfo/doc/jp-trans.catalog
0605デフォルトの名無しさん
2006/10/09(月) 23:40:05「1990年頃」の「洋書売り場」ということなので辛うじて true かな。w
0606デフォルトの名無しさん
2006/10/10(火) 01:38:140607デフォルトの名無しさん
2006/10/10(火) 02:38:43別にPerlにインターネットは必須じゃないけどさ。
0608デフォルトの名無しさん
2006/10/10(火) 03:44:19当時のPerlにWindows版バイナリなんてなく、
BSDとかでソースからのコンパイルも一苦労。
当時のPerlの完成度とハードウェアスペックではPerlは重くて
そうそう使われる代物ではなかった。
上記のハードルを乗り越えて当時から使っていたのであれば
かなりの情報収集力/運用力があるはず、
なのに$0を知らない。
ありえねぇ。。。
0609デフォルトの名無しさん
2006/10/10(火) 05:22:060610デフォルトの名無しさん
2006/10/10(火) 05:51:29>>608
当時のPerl文化圏は、インターネット/NetNews/JUNETとUNIX Magazineあたりに
存在した。
その時期に大学に進んだ年代で、理工系の上のレベルの大学に入った人なら、
比較的普通に触れられた環境だっただろう。
ちなみに、オライリーの本が出る前に、非常に上質な日本語マニュアルが存在
していた。
当時、コンパイル過程は延々質問に答えていくというものだった。
面倒だというだけ。
もっとも、大学等のワークステーションが主戦場だったので、ほとんどの利用者に
とっては、ソフトウェアというものは、しばしば得体の知れない技巧を持った、
畏怖すべき「管理者」氏が勝手に入れておいてくれるものであっただろう。
当時Perlの完成度については不満を持った記憶はない。現在とは異なる作法が
要求されたけどね。CPU速度もメモリサイズも現在の100分の1程度とかいう、
そういうオーダーだったころかな?
0611デフォルトの名無しさん
2006/10/10(火) 06:11:44インターネット歴36年を自称するキテガイが暴れたのを見たことがある。
「70年代にはメインフレームが主流で、ディスクはギガバイト単位だったのに」
とワークステーションの性能の低さを嘆く某二流大学工学部教授なんてのもいたし。
虚言と記憶改竄恐るべしである。
しかし、一方で、目の前にずっとニンジンがぶら下がっているのに、
10年もそのことに気づかないような人間も散見してきたのだよ。
だからとりあえず、質問箱は質問箱に戻りましょう。
0612デフォルトの名無しさん
2006/10/10(火) 17:39:00QRCode が GD::Barcode::QRcode でいとも簡単に作れてしまったこと。
素晴らしい。
0613デフォルトの名無しさん
2006/10/10(火) 17:42:17検証もしないで素朴な疑問だけどSwetake氏のとどっちがいいんだろね。
0614デフォルトの名無しさん
2006/10/10(火) 18:55:230615デフォルトの名無しさん
2006/10/10(火) 21:34:48採点しています。正解を次のような形で@ans1の中に入れています。
(1) my @ans1 = (4,4,2,1,4,3,1,4,6,1,3,3,3,6,5,3,8,4,2,4,1,3,5,5,4);
毎回、25問の正解をテンキーから入力していますが、数字の間に入れる","
の入力が面倒で ","を省略した(2)のような入力形式を考えています。
(2) 4421431461333653842413554
(2)の数字を分解して、@ans1に入れる方法はございますでしょうか?
0616デフォルトの名無しさん
2006/10/10(火) 21:37:34split //, $ten
@ans1 = qw( 2 2 3 4 5 ) ;
0617デフォルトの名無しさん
2006/10/10(火) 21:48:21無理せずExcelでも使ったほうが良いのでは…。
0618デフォルトの名無しさん
2006/10/10(火) 22:01:34分かりやすい実例をありがとうございます。ご指摘いただいた
実例を参考にして、明日、職場で次のようなスクリプトを試し
てみます。
my $ten = "4421431461333653842413554";
my @ans1 = split //, $ten
>>617
>無理せずExcelでも使ったほうが良いのでは…。
Excelはインストールはしていますが、Visual Basic(?)の使い方が
分からないので、採点作業はできない状況です。
Perlの便利なところは、CSV形式の生徒200人分の解答データを
読み込み、全体の平均点、得点分布、クラス別平均点を出力し、
生徒の個別の採点結果もファイルに出力する作業が一気にでき
る点です。Excel+Visual Basicでも同じことができるのでしょ
うが、Visual Basicの勉強が大変そうなので、躊躇しています。
0619デフォルトの名無しさん
2006/10/10(火) 22:23:03VBSな
0620デフォルトの名無しさん
2006/10/10(火) 23:43:38>別にPerlにインターネットは必須じゃないけどさ。
て言うかかなり関係ない。
0621デフォルトの名無しさん
2006/10/10(火) 23:44:18Excel VBAとPerlありゃいいや。
0622デフォルトの名無しさん
2006/10/11(水) 00:45:120623デフォルトの名無しさん
2006/10/11(水) 02:06:170624デフォルトの名無しさん
2006/10/11(水) 05:11:47http://search.cpan.org/~rjbs/Games-Nintendo-Mario-0.200/
マリオ作るんだったらコレ
0625デフォルトの名無しさん
2006/10/11(水) 09:33:51どうなんだろう? CPANの検索で qrcode で川合氏の GD::Barcode::QRcode
が出てきたからそっちしか試してない。
0626デフォルトの名無しさん
2006/10/11(水) 14:50:38PERL(CGI)でコーディングしたプログラムをバイナリー化して中身のコードを読まれない方法
はありますか?
ショッピングカートを作成したのですが、そのプログラムをお客に渡すと中身が読まれて
しまうので、読まれない形で渡したいのです。
どなたか良い方法を教えていただけないでしょうか?
宜しくお願いいたします。
色々調べたのですが、中々有効な情報が無くて・・・。
0627デフォルトの名無しさん
2006/10/11(水) 14:55:300628デフォルトの名無しさん
2006/10/11(水) 14:58:21他にやり方有ったら知りたい。
別式だとASP方式取るとか。
0629デフォルトの名無しさん
2006/10/11(水) 14:58:58完璧な方法はない。
手軽なのは難読化。
バイトコードにしてから渡すというのも、もしかしたら有効かも。
0630デフォルトの名無しさん
2006/10/11(水) 15:06:27PERLCCでバイナリ化するには、どのようにコマンド入力すればよいのでしょうか?
なかなか上手くいかないので、例をあげていただけると助かります。
0631デフォルトの名無しさん
2006/10/11(水) 15:47:42print "hello\n";
exit;
$ perlcc -o test test.pl
$ ./test
hello
0632デフォルトの名無しさん
2006/10/11(水) 16:59:580633デフォルトの名無しさん
2006/10/11(水) 17:10:450634デフォルトの名無しさん
2006/10/11(水) 17:18:26何さまのつもりだよ
0635デフォルトの名無しさん
2006/10/11(水) 17:20:350636デフォルトの名無しさん
2006/10/11(水) 17:31:36まさかバイナリなコードなら人間が理解できないとか思ってるのか?
0637デフォルトの名無しさん
2006/10/11(水) 18:07:38どっかのパクリとか...
0638デフォルトの名無しさん
2006/10/11(水) 18:11:50プログラム自体にもとんでもないエラーがありそうだ
0639デフォルトの名無しさん
2006/10/11(水) 19:37:19のさばってたりするんだろうなぁ。
0641デフォルトの名無しさん
2006/10/11(水) 21:10:38大きなお世話なんでしょうが…、
あなたはその商売に向いていないので展望を再検討されることをお勧めします。
そのまま続けても、搾取されて捨てられてから、潰しが利かなくなってしまった自分に気が付く事になるでしょう。
よほどぼろい客でもつかんだなら、しばらくはその客頼みで食えるかもしれませんが、それだけのことです。
がんばってください。
0642デフォルトの名無しさん
2006/10/11(水) 21:38:30自分の技術力を金で売ってるのに難読化して非公開し
他人には無料で技術を公開し手取り足取りで教えろとは
とても厚顔無恥ですね。
0643デフォルトの名無しさん
2006/10/11(水) 21:59:19これだと思うが。
0644デフォルトの名無しさん
2006/10/11(水) 22:28:47知らないならややこしいから取りあえず黙ってくれや
0645デフォルトの名無しさん
2006/10/11(水) 22:55:54googleやperldocでperlccの使い方を調べられない奴が
いっちょまえに文句言うな
0646句読点書けないバカをサマージャンボする俺 ◆9NQzQ21lx.
2006/10/11(水) 22:57:060647デフォルトの名無しさん
2006/10/12(木) 00:40:34644 == 645
0648デフォルトの名無しさん
2006/10/12(木) 02:17:54ソースを隠蔽することは当然の権利だよ。
現状じゃチープな難読化ツールとバイトコードにするぐらいしか手段がないけど
Perl6のFAQでここら辺のことに言及していた気がする。
0649デフォルトの名無しさん
2006/10/12(木) 03:45:36Perlインタプリタの上で動くスクリプトの話を
ごっちゃにされてもねぇ (´゚c_,゚` )
0650デフォルトの名無しさん
2006/10/12(木) 10:50:28書き始めの頃ってなんか恥ずかしいじゃん、見られるの。
でも見られて困るようなものを売るべきではないよな
>>645には同意
0651デフォルトの名無しさん
2006/10/12(木) 11:07:19難読化しようがバイナリ化しようがやはりヘボいコードであって
そんなものは誰の役にも立たないんだから
どうせ隠すならソースだけではなく存在自体をなかったことにするほうが合理的
0652デフォルトの名無しさん
2006/10/12(木) 11:15:45隠したいってだけでキレてる人はいないと思う。
ギブ&テイクの精神のなさや、ただでテイクしたもので商売しようとする態度でキレてるんだろう
0653デフォルトの名無しさん
2006/10/12(木) 11:16:570654デフォルトの名無しさん
2006/10/12(木) 12:23:29この人の書き込みを見てあなたはどう思う?
俺はこの人が商用のショッピングカートを開発できる人とは思えないわけよ。
そんな人がソースを隠したい理由って何だろうね。
0655デフォルトの名無しさん
2006/10/12(木) 12:32:43と素のCで書いたHello Worldだと
びっくりするほどバイナリサイズが違う罠(前者>>後者)
0656デフォルトの名無しさん
2006/10/12(木) 12:59:49yep. その代わり、大作か!? と思わせる効果がある。
0657デフォルトの名無しさん
2006/10/12(木) 14:16:49最初はそうなんじゃないの?ってこと
経験不足なのがクライアントにバレるのが嫌だとか
それでも食っていかなくちゃいけないとか色々あるでしょ
いやあるいはすごい技術がつまってて(ry
0658デフォルトの名無しさん
2006/10/12(木) 14:55:59> 最初はそうなんじゃないの?ってこと
普通、最初は人に見せまくりですが。
初期段階で人に見てもらわないと言うのは、異常な育ち方です。
0659デフォルトの名無しさん
2006/10/12(木) 15:09:190660デフォルトの名無しさん
2006/10/12(木) 15:15:150661デフォルトの名無しさん
2006/10/12(木) 15:31:34そういうヤバい人こそソースを見られている意識を持ってほしい。
今ならいくらでも良い書籍があるんだし、達人のソースも読めるんだし。
別にそういう人が商売するのは勝手だけど、2chスレで教えてくんすりゃ批判
されるだろうな。
0662デフォルトの名無しさん
2006/10/12(木) 15:46:56孤立した状態にいる独学の人だと、最初は人に見せないんじゃないかな。
まあ、だからといって、ほかの人たちが一般的に最初はそうなん
じゃないかと想定するのは変だけど。
0663デフォルトの名無しさん
2006/10/12(木) 15:56:53それを利用するプログラムを作ってソースを公開したくないという人に向かって
「公開しない精神は腐ってる」という方がよっぽど不愉快だ。
0664デフォルトの名無しさん
2006/10/12(木) 16:04:400665デフォルトの名無しさん
2006/10/12(木) 16:30:21もらったのに、それを調べようともしない態度を批難してんじゃねーの。
0666デフォルトの名無しさん
2006/10/12(木) 16:54:59> 自分と反対の考え方を許容すればそれで済むんじゃないかと。
キモオタに交際求められて断った女の子が、キモオタにそれを言われて
わがままだと批判されたと言ってた。
0667デフォルトの名無しさん
2006/10/12(木) 16:55:37あきらかに事実誤認
0668デフォルトの名無しさん
2006/10/12(木) 17:03:080669デフォルトの名無しさん
2006/10/12(木) 17:48:32通報しました
0670デフォルトの名無しさん
2006/10/12(木) 21:46:25文字列$strにひらがな以外の文字が含まれているか否かの判断は、どうすればできるのでしょう。
ひらがなが一文字でも含まれている場合の判断は
http://www.din.or.jp/~ohzaki/perl.htm#Character
を参考に
if ($str =~ /(?:\xA4[\xA1-\xF3])/)
で、できたのですが、ひらがな以外が一文字でも含まれる場合はどうすれば良いかわかりません。
あとはやっぱりパクリものかな(著作表示を消しているとかとか)
↓
「ひらがなが連続していない」
と解釈して良いかと。
0673デフォルトの名無しさん
2006/10/12(木) 22:09:38そういう場合は、「本当にやりたいこと」を書いたほうがいいよ。
なんとなく「ひらがな以外が一文字でも含まれる場合」は直接は関係ない感がひしひしと。
$str !~ /^(?:\xA4[\xA1-\xF3])+$/
# ひらがなのみが1文字以上含まれる、の否定
# =ひらがな以外が含まれる、または空文字
とかでいいんじゃね?
0674670
2006/10/12(木) 22:17:48>>673
レスありがとうございます。
コマンドラインからIMEの辞書ファイルを作成するスクリプトを作ろうとしていたのですが、
読みにはひらがな、全角英数、一部の全角記号しか使えないので、それ以外が入力されたときは弾くようにしたいのです。
そこで、ひらがなの場合はどうすれば良いかを聞いて、他の文字の場合に応用するつもりでした。
0675デフォルトの名無しさん
2006/10/12(木) 22:49:48色々あるが、盗作を隠すためなら問題だろう。
>>660
子供じゃないなら一部を全部と捉えるのはやめたほうがいい。
0676デフォルトの名無しさん
2006/10/13(金) 05:24:41文字コードによって変わるけど
0677デフォルトの名無しさん
2006/10/13(金) 05:54:53ひらがなしかない = 最初から最後までひらがなだけがぎっしり詰まっている
0678デフォルトの名無しさん
2006/10/13(金) 09:19:32皆さんは、この本(改訂前)を読みましたか?
リャマ->ラクダに行こうとしたのですが、
ちょっと無理でした。断念しました。
続をやってからにしようと思っています。
0679デフォルトの名無しさん
2006/10/13(金) 11:35:22一部とか全部とか妄想に浸りすぎですよ・・・
0680デフォルトの名無しさん
2006/10/13(金) 12:47:00これで入門したんだけど・・・
0681デフォルトの名無しさん
2006/10/13(金) 13:03:030682デフォルトの名無しさん
2006/10/13(金) 13:40:59じっくり読みたい時とか流し読みしたい時は本(ていうか紙)が便利。
perldoc だけで済んでるんなら、いいと思うけどね。
0683681
2006/10/13(金) 13:54:30媒体の違いでラクダ推奨なら好みの問題ですね。
納得。
0684デフォルトの名無しさん
2006/10/13(金) 17:15:000685デフォルトの名無しさん
2006/10/13(金) 17:27:23perlに限らず英語の技術系ドキュメント読めたほうがなにかと得。
0686デフォルトの名無しさん
2006/10/13(金) 17:45:510687デフォルトの名無しさん
2006/10/13(金) 19:11:010688デフォルトの名無しさん
2006/10/14(土) 05:54:580689デフォルトの名無しさん
2006/10/14(土) 08:59:56「一部」がそんな電波妄想で返しても無意味。
0690デフォルトの名無しさん
2006/10/14(土) 09:16:27それを皆の意見、その集団全てがそうだとだとみなすのは傲慢なのですよ。
0691デフォルトの名無しさん
2006/10/14(土) 09:32:440692デフォルトの名無しさん
2006/10/14(土) 09:55:33同意ですね。
ただ問題は、そんなことをしている人間がこの会話の参加者にいないことです。
0693デフォルトの名無しさん
2006/10/14(土) 10:02:050694デフォルトの名無しさん
2006/10/14(土) 13:07:35>>675
>>689
このへんにいるよ。
0695デフォルトの名無しさん
2006/10/14(土) 15:44:59PARでexe化出来なくなったという問題はまだ直らんのか。
0696デフォルトの名無しさん
2006/10/14(土) 17:57:32if ($str =~ /^(?:\xA4[\xA1-\xF3])+$/)
でいいと思うが、文字コード依存というのは感心しないね。utf8に変換して、
if (/^[\p{InHiragana}\x{30fc}]+$/) # [ぁ-ん゛゜ゝゞー]+
の方がずっと読みやすいだろう。
0697デフォルトの名無しさん
2006/10/14(土) 19:00:19フォルダ選択用のウィジェットって無いでしょうか?
getOpenFile()のフォルダ版のような感じの。
データの保存用フォルダを指定する用の入力とかに使いたいんですが、
getOpenFileだと絶対ファイル名を指定しないといけないので、
空のディレクトリを指定することが出来なくて困っています。
仕方なく手動で入力してますが、フルパスなのでバリめんどいです。
誰かご存じの方がいらっしゃいましたら、よろしくお願いします。
0698デフォルトの名無しさん
2006/10/14(土) 20:06:21Tk::chooseDirectory() # if $Tk::VERSION >= 804;
0699697
2006/10/14(土) 22:02:41おおお!ありがとうございます!まさにこれです!!
Tk勉強し始めたばかりなんですが、
こういうウィジェットの一覧が画像でのってるサイトってどっかに無いでしょうか?
本でもいいんですが。
0701デフォルトの名無しさん
2006/10/15(日) 05:30:150702デフォルトの名無しさん
2006/10/15(日) 06:46:110703デフォルトの名無しさん
2006/10/15(日) 08:20:58オマエばかじゃねえの?
0704デフォルトの名無しさん
2006/10/15(日) 08:36:390705デフォルトの名無しさん
2006/10/15(日) 08:41:00でも、どうせならPythonでも学んだほうが・・・・ってのは禁句か。
0706デフォルトの名無しさん
2006/10/15(日) 09:54:49インデントのみで構造を表しているのでちょっとプログラムの構造をいじるのに{と}を追加してインデント
ぐちゃぐちゃになったのをperltidyで整形みたいなことが本質的にできないのが不便なのです。
0707デフォルトの名無しさん
2006/10/15(日) 10:44:25> でも、どうせならPythonでも学んだほうが・・・・ってのは禁句か。
っていうか、ここで言ってもしょうがない
0708デフォルトの名無しさん
2006/10/15(日) 10:45:18> Pythonはインデントで構造あらwすのが嫌い。インデントつけるのは嫌いではなくて当たり前なんだが、
文章だと思うんだ!!
0709デフォルトの名無しさん
2006/10/15(日) 11:05:10最初からきれいに書く=Python
って事ですよね^^
0710デフォルトの名無しさん
2006/10/15(日) 13:24:14ぐちゃぐちゃに書いてから整形する予定だったが面倒くさいから後回しでいいやと思い結局そのまま=Perl
0711デフォルトの名無しさん
2006/10/15(日) 13:38:520712デフォルトの名無しさん
2006/10/15(日) 13:56:590713デフォルトの名無しさん
2006/10/15(日) 13:58:100714デフォルトの名無しさん
2006/10/15(日) 14:00:39( 人____)
|ミ/ ー◎-◎-)
(6 (_ _) )
| ∴ ノ 3 ノ
\_____ノ
マル・パク・リー [Mal Pak Lee]
(1989〜2006没 韓国)
0715デフォルトの名無しさん
2006/10/15(日) 14:10:270716デフォルトの名無しさん
2006/10/15(日) 15:08:160717デフォルトの名無しさん
2006/10/16(月) 12:59:40くだスレでは返答がいただけないのでこちらに書き込ませていただきます。
CGI_Liteを使用したいためcpanを入れて
cpan> install CGI_Lite
とやってみたところ
--------------------------------
Welcome to the installation of CGI_Lite 1.8...
WARNING: MAN3PODS takes a hash reference not a string/number.
Please inform the author.
Checking if your kit is complete...
Looks good
Can't use string (" ") as a HASH ref while "strict refs" in use at /usr/lib/perl5/5.8.6/ExtUtils/MM_Unix.pm line 510.
Running make test
Make had some problems, maybe interrupted? Won't test
Running make install
Make had some problems, maybe interrupted? Won't install
--------------------------------
と出てうまくインストール出来ません。
どのようにしたらCGI_Liteがインストール出来るのでしょうか?
ご助力をいただけますと幸いです。
ちなみにcpan> install CGI::Liteでは
cp Lite.pm blib/lib/CGI/Lite.pm
Manifying blib/man3/CGI::Lite.3pm
とうまくインストールできた模様なので
サーバーの設定がまずいというわけではないと思っております。
0718デフォルトの名無しさん
2006/10/16(月) 13:25:05CGI_Lite 1.8はCGI::Liteのものすごく古いバージョン(2.0になった
ときに名前がかわった)。1997年のものだからさすがに古すぎる
んじゃないか。
どうしてもインスコしたければPerlを古いのにするか、自分で問題
がある部分を書き直すかだろうね。
0719デフォルトの名無しさん
2006/10/16(月) 16:04:21そのたびに私は「離婚したい」などと言っていました。
でも主人はいつもそれには応じず、聞き流していたのですが、
先日の喧嘩でついに主人の方から「離婚したほうがいい」と
言われてしまいました。
自業自得なのかもしれませんが、離婚したくありません。
私は本当に離婚する気などなく、ただ主人の気持ちを
確かめるためだけに離婚という言葉を使って来たように思います。
でも話し合いの中で、他に好きな人がいるわけではないけど
彼の私に対する愛情はもうないこと、自分はマイペースだから
そのリズムを壊されるのが我慢できないこと、
今後私がどんなに変わる努力をしても今の気持ちは変わらないだろう
というようなことを言われました。
私は主人のことはまだ好きで、どうしても離婚したくありません。
元に戻れるならどんなことでもしたいです。
でもここまで離れてしまった主人の気持ちはもう元にはもどらないでしょうか。
0720デフォルトの名無しさん
2006/10/16(月) 16:52:56「なんでここで聞くんだよw」などの反応を期待されての書き込みだとは思いますが、
残念ながらまったく面白くありません。
0721デフォルトの名無しさん
2006/10/16(月) 18:08:39aaa
ccc
というまとまりと
bbb
ccc
というまとまりが10000行ほどファイルとして存在するとします。
このとき、cccの部分だけ抽出したいのですが、
aaaの場合のcccとbbbの場合のcccを分けたいので、
if(/aaa\n(ccc)/){
print $1;
}
とやったのですが、out of memoryと表示されました。
他にいいやり方を教えてください。
0722デフォルトの名無しさん
2006/10/16(月) 18:15:39奇数行目なのかを判断して、2通りの処理をすればいいかと。
0723デフォルトの名無しさん
2006/10/16(月) 19:02:490724デフォルトの名無しさん
2006/10/16(月) 19:17:05while(<>){
if($flag){
$flag = 0;
if(/^(ccc)/){
print $1;
}
}
$flag = 1 if(/aaa$/);
}
こんなんでどうよ?
0725デフォルトの名無しさん
2006/10/16(月) 19:28:23while(<>){
if ($_ =~ /aaa/){$flg=1; next;}
if ($_ =~ /bbb/){$flg=2; next;}
if ($_ =~ /ccc/){
print "a $_" if $flg==1;
print "b $_" if $flg==2;
}
$flg=0;
}
こんなのしか思いつかない・・・orz
0726デフォルトの名無しさん
2006/10/16(月) 19:29:41if ( /^aaa/ .. /^(ccc)/ ){ print $1 if $1 ; }
}
0727デフォルトの名無しさん
2006/10/16(月) 20:34:320728デフォルトの名無しさん
2006/10/16(月) 20:39:550729デフォルトの名無しさん
2006/10/16(月) 20:59:16検索したけどよく分からんです。
0730デフォルトの名無しさん
2006/10/16(月) 21:12:270731デフォルトの名無しさん
2006/10/16(月) 21:19:280732デフォルトの名無しさん
2006/10/16(月) 22:24:19偽が返るかと思ったのに真が返ってくるので嵌った嵌った。
定数表現になってるもんだから行番号との比較になった上に、
一行も読み込んでないから$. == 0のために真が返ってるのね。
0733デフォルトの名無しさん
2006/10/16(月) 22:43:26めちゃめちゃありがとうございます!
0734デフォルトの名無しさん
2006/10/16(月) 22:54:37for (qw{a b c a c c}) {
print $_ if (/a/ .. /c/);
}
このコードの出力が "aacc" ではなく "abcac" になるのが謎だった
が、いま原文読んでわかった
> Once the left operand is true, the range operator stays true until the right operand is true
「右が真になるまで真を返す」じゃねーかクソが
0735デフォルトの名無しさん
2006/10/16(月) 23:27:410736デフォルトの名無しさん
2006/10/16(月) 23:32:310737デフォルトの名無しさん
2006/10/16(月) 23:45:16ワロスwww
perler が until 間違えちゃいかんよなあw
0738デフォルトの名無しさん
2006/10/16(月) 23:53:15ここに書いてあったので見た時はびっくりしました。
http://allabout.co.jp/internet/cgiperl/closeup/CU20040421A/index2.htm
どうすれば作れるんでしょうか。
お時間がある方、どうか教えてください。
0739デフォルトの名無しさん
2006/10/17(火) 00:14:530740デフォルトの名無しさん
2006/10/17(火) 01:18:50for の後置文使ってるから if 文をコピペミスしたのではないと思うのだが、
まあ、そこはおいとくとして。
1. scalar したからといってリスト全体が scalar コンテキストで判断されるわけではない。
perl -le 'print scalar ( 0 , 3)'
単に最後の要素をプリントしてるだけ。
perldoc -f scalar に注意書きがなされている現象。scalar は単項演算子だから〜のくだり。
2. 拡大解釈してやりたいことが以下の様な事だったとして、
perl -le 'for ( 1 .. 5) { print "hoge" if 0..1 }'
これの 0 .. 1 は、732 の解説通りたまたま左辺が $. == 0 で成立し(#) print
perl -le ' $. = 1 ; for ( 1 .. 5) { print "hoge" if 0..1 }'
は、print されないと。
# 実際には undef == 0 というのが成立する。ちょっと違和感。
スカラーコンテキストで範囲演算子に指定された数字が $. を見に行くっての忘れそうだな、、、
0741デフォルトの名無しさん
2006/10/17(火) 17:24:58scalar LIST は、リスト全体をスカラーコンテキストで評価するよ。
例えば、$a=(0,3); と $a= scalar(0,3); は同じ値になる。
スカラーコンテキストで配列は要素数を返し、リストは最後の要素を返す違い。
それと、732のコードに手を入れて
perl -e "$.=$_,print $.,':',scalar(0..1),qq/\n/ for (1..5)"
とした場合や、範囲を変えて
perl -e "$.=$_,print $.,':',scalar(0..1),qq/\n/ for (0,0,1,1,1,0,0,0,1,1)"
とした場合も見てみるといいよ。
732は 0..1 を false..true のつもりで使ったと書いているから、実際の $_ は
false か true が入るループだったという考えでね。
0742デフォルトの名無しさん
2006/10/17(火) 17:47:18スマソ、「必ずしも」が抜けてました。
perldoc -f scalar してください。きちんと注意がきは載ってます。
後半はまあ、どうでもいいです。
0743デフォルトの名無しさん
2006/10/17(火) 18:02:10実行できない例をだすなよw
>perl -e "$.=$_,print $.,':', scalar(0..1),qq/\n/ for (1..5)"
>Can't modify constant item in predecrement (--) at -e line 1, near "color="
>syntax error at -e line 1, near "qq/\n/ for "
>Execution of -e aborted due to compilation errors.
リスト中でプリントするなよw
下を実行してみ?
$ perl -le 'print 0, print 0, $a = 'b' , 1'
同一リスト内で代入と print なんて狂気の沙汰だw
0744デフォルトの名無しさん
2006/10/17(火) 18:12:44b をシングルでくくってなんでエラーになんないんだよ orz...
0745デフォルトの名無しさん
2006/10/17(火) 20:44:50B::Deparseしたくて色々試したら実行出来たよ意味不明だけど
おそらくbash/zshだけ
$ perl -e 'print "$.¥n" '
$ perl -MO=Deparse -e "$.=$_,print $.,':',scalar(0..1),qq/¥n/ for (1..5)"
foreach $_ (1 .. 5) {
$. = print($., print($., ':', scalar(0 .. 1), "¥n"));
}
-e syntax OK
0746741
2006/10/17(火) 22:29:14リストに含まれる全要素数が欲しい場合は単にリストにscalarを適用するのではなく、
一時配列を作れって部分だよね。
これとリスト全体が…がどうにも繋がらなくて悩んだのだけど、もしかして
リスト全体をスカラー評価=リストに含まれる全要素数を取得って事でしたか。
失礼しました。
>>743 >>745
それは申し訳無い。
駄目な理由は $ をシェルが展開するからなので、適当にクォート($→\$)して下さい。
シングルクォートで
perl -e '$.=$_,print $.,q/:/,scalar(0..1),qq/\n/ for(1..5);'
と書けば良いんだけど、そうすると今度はwin系で通らなくなる気がする。
リスト中のプリントって、 printの左にあるコンマ演算子の事だよね。
そのコンマ演算子ならリストとは無関係です。
0747743
2006/10/17(火) 23:10:31> 駄目な理由は $ をシェルが展開するからなので、適当にクォート($→¥$)して下さい。
うわあ、、、大恥(汗)
>そのコンマ演算子ならリストとは無関係です。
745 の Deparse 結果を読んで理解してて、それがお前が意図したものなら何もいわんが…
まあいいや、元気でやってくれ。
0748デフォルトの名無しさん
2006/10/17(火) 23:19:11745の結果もなんかおかしいよ?""の影響じゃね?
0749デフォルトの名無しさん
2006/10/17(火) 23:28:050:1
0:2
1:3E0
1:
1:
0:1
0:2
0:3
1:4E0
1:
この結果を誰か解説してくれ、俺には理解できん。
0750デフォルトの名無しさん
2006/10/17(火) 23:49:54> この演算子は、偽なら空文字列を返し、真なら(1から始まる)通し番号を返す。
> この通し番号は、新たな範囲がスタートするごとにリセットされる。
> 範囲の終了点では、通し番号の後ろに文字列“E0”を付けたものを返す。
> この“E0”は値を数値として解釈する際には何の影響も与えないが、
> 範囲の終了点を除外するための目印とすることができる。
「プログラミング Perl VOLUME1」第三版 p121 より引用
0751デフォルトの名無しさん
2006/10/18(水) 00:09:54thx. 範囲演算子の方の機能なのね>E0
0752デフォルトの名無しさん
2006/10/18(水) 17:39:50Ctrl-Cとかで終了したときに abort を呼ばないといけないんだけど
%SIG{'INT'} = abortFTP;
ftp_dest->pasv_wait(ftp_src);
ってやっても、タイムアウトするまで abortFTP が呼ばれないんです。
ちゃんと abortFTP が呼ばれるようになるにはどうすれば
いいのか教えてください。
0753デフォルトの名無しさん
2006/10/18(水) 17:55:250754デフォルトの名無しさん
2006/10/18(水) 18:08:460755デフォルトの名無しさん
2006/10/18(水) 18:11:02タイムアウト処理のためにNet::FTP側で$SIG{ALARM}を仕掛けているだろうから
アラームの時間を1secとかに書き換えればすぐにタイムアウトするのでは?
0756デフォルトの名無しさん
2006/10/18(水) 18:16:56>>754で解決したんだと思われ
0757デフォルトの名無しさん
2006/10/18(水) 18:24:58タイムアウト処理は pasv_wait の中の responce の中の getline の中の select でやってるみたいです。
あと、「転送開始→すぐに中断」が目的じゃなくて、
あくまで Ctrl-C を押したときに abort することが目的なので
alarm(1);
ftp_dest->pasv_wait(ftp_src);
は目的とは違うと考えて試していません。
abortFTPのなかで alarm(1) すればいいんじゃないの?ということならば、
そもそもタイムアウトまで print すら呼ばれない状態なので
意味がないかなとか思います。
そもそも、$SIG{'INT'} を設定しないときはデフォルトの
ハンドラが即座に走るのに、
設定するとなんでタイムアウトまでブロックされるのが疑問です。
>756
いえ、解決していません。投稿時に間違えただけです。
0758デフォルトの名無しさん
2006/10/18(水) 18:51:35その辺の条件も出すと何かわかる人がいるかもしれない。
とりあえずシステムコールトレースでもしてみてはどうか。
0759デフォルトの名無しさん
2006/10/18(水) 20:04:12$SIG{'INT'} = \&abortFTP;
と書かなくていいのか、へえ。
0760デフォルトの名無しさん
2006/10/18(水) 22:07:04$SIG{'INT'} = sub {
print "abortFTP\n";
abortFTP();
};
としたら、^C で "abortFTP\n" は表示される?
というか、環境書けや。まさかwin32ってオチじゃねーだろな。
0761デフォルトの名無しさん
2006/10/18(水) 22:08:320762デフォルトの名無しさん
2006/10/18(水) 22:35:32window環境で作ってる奴なんか、ふつーにいるんじゃねぇの?
何がまさかなんだ?
0763デフォルトの名無しさん
2006/10/18(水) 22:57:21WinではOSの設計の差異からいろいろと問題がある。
質問をする奴らは環境ぐらい書け。
0764デフォルトの名無しさん
2006/10/19(木) 00:15:25正規表現で抜き出すのに限界を感じたんで、HTML::Parser使おうと思ってるんですが、
ドキュメントだけだとイマイチ使いかたが判らんのです。
HTML::Parserの使いかたが判り易く載ってるサイトってないですかね?
HTML::TreeやHTML::TokeParserも似たようなもんなのかな?
0765デフォルトの名無しさん
2006/10/19(木) 00:32:43TokeParserはHTML::ParserをラッピングしてI/Fを直感的にしたもの。
漏れは使ったことないけど。
最近出てきたHTML::Selector::XPathはどうよ?
http://blog.bulknews.net/mt/archives/002072.html
0766デフォルトの名無しさん
2006/10/19(木) 01:12:39DOSとunixだと^Cの効くタイミングがぜんぜん違うじゃん
0767752=757
2006/10/19(木) 10:30:08その書き方は知りませんでした。正確には
$SIG{'INT'} = 'abortFTP';
とやってました。
>760
>としたら、^C で "abortFTP\n" は表示される?
タイムアウトまで表示されません。
>環境書けや。
環境はWindowsXP で ActiveState の Perl 5.8.8です。
0768デフォルトの名無しさん
2006/10/19(木) 10:58:00見かけるが解決したのを見たことがない。(ぐぐってみれば
わかる)
別の方法を考えることをお勧めする。
0769752
2006/10/19(木) 12:43:56うまい回避策も見つからなかったので
ActivePerl を使わない方向で進めることにします。
ありがとうです。
0770デフォルトの名無しさん
2006/10/20(金) 01:26:27$_ = $j->$self->{out_char};
こんなコードなんですが、Jcodeのメソッドがないと怒られます。
$self->{out_char}に'euc'が入っているんですがうまく変数展開できない。
$self->{in_char}は問題なし(あたりまえか)。
${self}->{out_char}とか${self->{out_char}}とかやっても駄目でした。
一旦、$out_char = $self->{out_char}と代入すれば上手くいくので、
お茶を濁してるんだけどスマートな書き方ありませんか?
後、$mode = 'out'; $self->{${mode}_char}みたいなのも駄目ですよね?
こういう考え方が間違ってるのかな…
0771デフォルトの名無しさん
2006/10/20(金) 01:28:27$aaa=&sub1();
print $$aaa;
sub sub1
{
my $bbb;
$bbb="ABCD";
return \$bbb;
}
my宣言されたレキシカル変数の値に対して、リファレンスでスコープ外から
参照出来ますが、この場合のsub1における$bbbの値がいつまで保持されるのかが
分かりません
メモリ空間的に$bbbの値はプログラムが終わるまで保持され、安全だと思っても
良いのでしょうか?
0772ヽ(´ー`)ノ ◆.ogCuANUcE
2006/10/20(金) 02:05:53その syntax は、一度変数に代入して $j->$out_char とするしかない。
一次変数を用意するのが面倒な時は can() を使うとか。
$_ = $j->$self->{out_char};
↓
$_ = $j->can($self->{out_char})->();
うーん、イマイチ。
蛇足だが、$j を使い回さないなら、あえて convert() とか。
Jcode::convert(\$_, $self->{out_char}, $self->{in_char});
>>771
Perl の変数は参照カウンタを持っているので、参照されている限り保持される。
プログラムが終わるまで使われていれば終わるまで保持されているだろうし、
使われなくなった場合は GC が走ったタイミングでメモリから消える可能性が
あるが、使われてないんだからそもそも関係ない。
要は、変数がメモリ空間にあるか考えてコードを書く必要はないってこった。
0773デフォルトの名無しさん
2006/10/20(金) 02:10:55いったん別の変数に代入するのが一番明示的でいいと思うんだけど
あなたの言う「スマート」とは例えばどんなコード?
後半部分については、そもそもハッシュのキーは文字列なので
$self->{"${mode}_char"} と引用符で囲うか、 $self->{$mode . "_char"} とすればできます。
0774デフォルトの名無しさん
2006/10/20(金) 02:54:29無名変数つかってるだけで実質明示的に別変数に入れるのと変らん罠
0775764
2006/10/20(金) 07:40:13こう言われると「ぐう」の音も出ませんw
TokeParserの方が直感的で判り易いのと希望の動作が出来たんでTokeParser使います。
0777デフォルトの名無しさん
2006/10/20(金) 15:30:47while (my ($key,$value) = each %ENV) {
print "$key=$value\n";
}
は大丈夫で、
use strict;
print "$key=$value\n" while (my ($key,$value) = each %ENV)
はどうしてダメなのでしょうか?
Global symbol "$key" requires explicit package name at -e line 1.
Global symbol "$value" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
と言われてしまいます。
0778デフォルトの名無しさん
2006/10/20(金) 16:47:240779デフォルトの名無しさん
2006/10/20(金) 20:14:50呼び出し時の引数過不足はチェックされますが、
プロトタイプを別ファイルにしてインクルード(require)すると
エラーチェックされません(perl, v5.6.1)
これをエラーチェックさせるような方法はないのでしょうか。
use strict 'vars' / use vars... などもインクルードすると
無効になり、非常に使い勝手悪いです。。。
0780デフォルトの名無しさん
2006/10/20(金) 20:59:010781デフォルトの名無しさん
2006/10/20(金) 21:15:22BEGINブロックの中でrequire
requireはそのままだと実行時に評価されてしまうので、
プロトタイプのチェックが行われる解釈段階には効果を及ぼせない
0782デフォルトの名無しさん
2006/10/20(金) 21:22:40requireじゃなくモジュール化してuseにする。
0783デフォルトの名無しさん
2006/10/20(金) 21:29:47ありがとう>781
0784デフォルトの名無しさん
2006/10/20(金) 22:08:25AAA
BBB
CCC
というファイルがあります。
一行目がAAAであるときのAAAとCCCを
AAA CCCというならびで抽出したい場合
foreach(<STDIN>){
if(/(AAA)/){
print "$1";
foreach(<STDIN>){
if(/(CCC)/){
print " $1\n";
last;
}
}
}
}
で上手くいきません。
ご教授お願いします。
0785770
2006/10/20(金) 23:21:34ありがとう。代入するしかないんですね。
convert()使用でも無問題なんで、こっちの方がすっきりしますね。
convert()にします。
>>773
「スマート」なんて人それぞれなんで変ないいかたしました。
個人的には、可読性がおちなければ、より少ない変数、少ない行数って事ですね。
今回は、$self->{out_char}で意味は通じてるので、わざわざ同じ意味の$out_charに
代入するのが??と思ったからです。
それと、$out_charをやってしまうと、統一感で意味で$in_charも作らないと駄目ですよね。
ものぐさな者なんで、引用符とかで逃げれないかなと思ったもんで。
後半部はあっさり出来ました、ありがとうございます。
0786デフォルトの名無しさん
2006/10/20(金) 23:45:50myで宣言した変数はその宣言が含まれた文が終わるまでは
見えない。
0787デフォルトの名無しさん
2006/10/21(土) 00:58:30$count = 0;
$str_a = "";
$str_c = "";
foreach (<STDIN>) {
if (!$count++ && /(AAA)/) {
$str_a = $1;
next;
}
if ($str_a && /(CCC)/) {
$str_c = $1;
last;
}
if ($count && !$str_a) {
last;
}
}
print $a, $c, "\n";
でどうかな。
0788デフォルトの名無しさん
2006/10/21(土) 01:23:09ありがとうございます。
AAA
BBB
CCC
の塊がが複数行続くんですが、どう処理させたらいいんでしょうか?
0789デフォルトの名無しさん
2006/10/21(土) 01:33:12マルチはやめようよ...
0790デフォルトの名無しさん
2006/10/21(土) 03:15:201:
マウスアクションって不可能なんでしょうか。
例えば、ノートブックのタブをダブルクリックしたらそれを閉じたり、
タブを掴んで画面の外まで持っていくと新しい画面にするとか、
そうゆう風に動かしたいんですけど無理でしょうか。
2:
あと、エクスプローラーのフォルダの画面で「詳細表示」にしたみたいな画面は作れないんでしょうか。
(上にファイル名とかファイルサイズとかの項目があって、好きに並び替えたり、左右の広さを調節できたりする)。
3:
ちなみに、2のような画面形態のことをなんていいますか?w
0791デフォルトの名無しさん
2006/10/21(土) 05:09:02http://d.hatena.ne.jp/sumii/20060928/1159394568
http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/sumii/20060928/1159394568
0792デフォルトの名無しさん
2006/10/21(土) 10:46:320793デフォルトの名無しさん
2006/10/21(土) 11:57:340794デフォルトの名無しさん
2006/10/22(日) 01:48:51http://203.111.199.131:8080/test.m3u ←を拾ったとき、test.m3uまで含めたいのですが 8080の後ろで切れてしまい
それを$outputの中に入れてしまいます。
test.m3uまで含めた状態で$outputに入れたいです。
どうすればいいでしょうか?
↓ここの表記に問題がありますか?
while ($data=~ m/(((?:$site_m)[\:\d\w\-\.\/\=\?\!\-\%\&\_\#]+\:[\d]+)|h?ttp:\/\/(?:[\w\/\.\?\-\%\&\=]*$site\/[\w\/\.\?\-\%\&\=]*|[\w\/\.\?\-\%\&\=]*\.$ext[\w\/\.\%\&\-\?\=]*))/g) {
$output = $1;
}
0795デフォルトの名無しさん
2006/10/22(日) 02:05:060796デフォルトの名無しさん
2006/10/22(日) 02:07:07すみません。回答がつきませんでした
0797デフォルトの名無しさん
2006/10/22(日) 03:48:410798デフォルトの名無しさん
2006/10/22(日) 04:33:130799デフォルトの名無しさん
2006/10/22(日) 04:44:04じゃあ、どうすればいいんだよ
0800デフォルトの名無しさん
2006/10/22(日) 04:44:400801794
2006/10/22(日) 05:26:370802デフォルトの名無しさん
2006/10/22(日) 07:45:59お前の頭の悪さじゃ一生わかんねぇだろうなwwwwww
もっかい死んでこい
0803デフォルトの名無しさん
2006/10/22(日) 08:28:30> どうすればいいでしょうか?
同じようなことをやっているプログラムを探して、
どうやっているのか調べると良いです。
0804デフォルトの名無しさん
2006/10/22(日) 08:41:25>>801で死ねないって言ってるくらいアフォだから放置しろ
0805デフォルトの名無しさん
2006/10/22(日) 09:10:10>794
0806デフォルトの名無しさん
2006/10/22(日) 10:06:53しねよ
オメーなんかには聞いてない
0807デフォルトの名無しさん
2006/10/22(日) 11:28:33キモメガネ調子のんなよ
0808デフォルトの名無しさん
2006/10/22(日) 11:29:40逆にマルチしちゃいけない理由を言えよwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0809デフォルトの名無しさん
2006/10/22(日) 12:07:26おまえもしねよ
0810デフォルトの名無しさん
2006/10/22(日) 12:28:17ppmでモジュールをインストールしたいです。
モジュールはSOAP::Liteです。
>search SOAP::Lite
から調べていくと、以下まで達しました。
ppm> search ResourcePool-Resource-SOAP-L
Using cached search result set 7.
1. ResourcePool-Resource-SOAP-~ [1.0101] SOAP::Lite bindings for ResourcePool
2. ResourcePool-Resource-SOAP-~ [1.0101] ResourcePool-Resource-SOAP-Lite
ここで、正式名称が分からないので、インストール/確認ができない状態です。
チルダで省略されている部分を参照するにはどうすれば良いでしょうか?
宜しくお願いします。
0811デフォルトの名無しさん
2006/10/22(日) 14:26:04if ( @list1[2] eq @list2[3] ){
とやってて、@list1[2]と@list2[3]にはそれぞれ"00001"が入っているのですが、
条件に一致しません。
if ( @list1[2] == @list2[3] ){
とすると一致します。
この例では値が"00001"ですが、実際は文字の場合もあるので、eq をつかいたいのですが、
どうしたらよいでしょうか?
Perlは文字とか数値とかあんまり意識せずに使えると思ってましたが、こういう場合は
別なんでしょうか?
0812デフォルトの名無しさん
2006/10/22(日) 14:39:450813デフォルトの名無しさん
2006/10/22(日) 15:08:38ActiveState のリポジトリには SOAP-Lite 自体は無いので、
Winnipeg をリポジトリに加えて最優先にした上で
ppm> upgrade -install -precious SOAP-Lite
http://www.ss.iij4u.or.jp/~somali/web/_ppm.html#rep_about
http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58
>>811
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq4.html#what_is_the_difference_between__array_1__and__array_1_
0814デフォルトの名無しさん
2006/10/22(日) 15:25:53とりあえず配列じゃないので試してみたらどうかね?
0815619
2006/10/22(日) 19:08:02有難う御座います。
自己レスになってしまうのですが、
ppm> search SOAP::lite
Searching in Active Repositories
1. ResourcePool-Resour~ [1.0101] SOAP::Lite bindings for ResourcePool
2. SOAP-Lite-InstanceE~ [0.02]
3. SOAP-Lite-SmartProxy [0.11] URI Redirection and Forwarding for SOAP-Lit~
4. SOAP-Lite-Utility [0.01] Utilities for SOAP::Lite client programs
ppm> describe 3 <----------------コレ
====================
Package 3:
Name: SOAP-Lite-SmartProxy
Version: 0.11
<略>
====================
上記のように、正式名が分かりました。
0816619
2006/10/22(日) 19:08:37また、
C:\myPerl>perldoc -l SOAP::lite
C:\Perl\site\lib\SOAP\lite.pm
から、SOAP::liteは、V5.8.6には入っているようです。
追加質問
http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58
が、値を返さない?ようなのですが、何か間違っていますでしょうか?
0817619
2006/10/22(日) 21:17:42>816
自己解決しました。
リポジトリに追加するわけですね。
納得しました。
すみませんが、再度追加質問です。
Time::JuliasDay のモジュールはどこで手に入ります
でしょうか?
active stateやこのwininpeg
には無いようでした。
すみませんが、宜しくお願いします。
0818デフォルトの名無しさん
2006/10/22(日) 21:39:16ppmにあるのかしらんけど
0819816
2006/10/22(日) 22:06:25そうです。
間違えました。Cpanに有るのは確認しました。
http://search.cpan.org/~muir/Time-modules-2006.0814/lib/Time/JulianDay.pm
だけど、インストールで
makeしろってあるのですが、windowsなので手詰まりです。。。
0821816
2006/10/22(日) 22:28:17そうなんですか。
Cpanからダウンロードして、解凍すると
libの下にtime と t というフォルダがあります。
libはいいとして、tは何か必要なのですか?
宜しくお願いします。
0822デフォルトの名無しさん
2006/10/22(日) 23:21:47てっとりばやいのは nmake なので、検索してダウンロードしてパスが通ったとこにおいて
コマンドプロンプト開いて、ソースのフォルダに cd して、nmake して nmake test して nmake install。
0823816
2006/10/23(月) 01:45:47有難う御座います。
nmake test
で、エラーが発生しました。
ですが、
構わず、nmake install
をしました。
一応インストールはできたと思うので、
確認してみます。
0824デフォルトの名無しさん
2006/10/23(月) 16:05:09tはテスト用ディレクトリだと思った。
0825デフォルトの名無しさん
2006/10/23(月) 17:03:30>>824
http://search.cpan.org/~mschwern/ExtUtils-MakeMaker-6.31/lib/ExtUtils/MakeMaker/Tutorial.pod
0826デフォルトの名無しさん
2006/10/23(月) 22:04:53どこみれば書いてありますかね?
体験的には英数字 . / のようなんですけど
, とか=なんかデリミッターで使いそうな文字返されると
やばいんで。。
0827デフォルトの名無しさん
2006/10/23(月) 22:08:09どうせCのライブラリ呼んでるだけなんでこのへんで。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/crypt.3.html
0828デフォルトの名無しさん
2006/10/23(月) 22:25:030829デフォルトの名無しさん
2006/10/23(月) 22:35:44> どこみれば書いてありますかね?
>>622-623
0830826
2006/10/23(月) 22:49:46でも、827-828どっちみても今ひとつ確信がもてない。。。
827には、「13 の印字可能な ASCII 文字からなる」なんて書いてあるし
828での具体的な説明はsaltだし、
うちのCライブラリには、cryptもどきしかいないし
0831デフォルトの名無しさん
2006/10/23(月) 23:07:54他人が信用できないならソース読むとか。
サーブルさんのとこにpure perlなのがあったと思う。
0832デフォルトの名無しさん
2006/10/23(月) 23:12:03うちでは5.8.8を入れているが、perldoc -f perlfunc のこの部分にしっかり
書いてあるだろ。
Traditionally the result is a string of 13 bytes: two first
bytes of the salt, followed by 11 bytes from the set
"[./0-9A-Za-z]", and only the first eight bytes of the digest
string mattered, but alternative hashing schemes (like MD5),
higher level security schemes (like C2), and implementations on
non-UNIX platforms may produce different strings.
0833デフォルトの名無しさん
2006/10/23(月) 23:14:09cryptがどうなってるか調べるより、デリミタでやばい文字を含む場合の
エスケープを実装しとけば今後何があっても安心だ。
0834デフォルトの名無しさん
2006/10/23(月) 23:26:36僕が知らないだけで色々あんのかな。
0835826
2006/10/23(月) 23:33:24おっと、うちのperlが古かったんだ(v5.6.1)。 そんなdocは出てこなかったです。
>>833
そのエスケープするロジックは、もう入ってるんすよ。
んで、[a-zA-Z0-9./]が保証されるんなら、無駄なロジックだから捨てようかと
今10万回ループさせてみたけど、何故か '0' だけ返ってこない
0836デフォルトの名無しさん
2006/10/23(月) 23:40:45好きにしてくれ。
0838デフォルトの名無しさん
2006/10/24(火) 18:04:50既に.sqlファイルはあるんですが、それをperlで動かすことになってしまって・・
0839デフォルトの名無しさん
2006/10/24(火) 18:07:590840デフォルトの名無しさん
2006/10/24(火) 18:35:110841デフォルトの名無しさん
2006/10/24(火) 18:42:460842デフォルトの名無しさん
2006/10/24(火) 20:55:000843デフォルトの名無しさん
2006/10/24(火) 20:56:030844デフォルトの名無しさん
2006/10/24(火) 21:37:51「perlに入力された値が
1. すべて英文字
2. すべて数字
3. 英文字と数字まじり
判断方法を教えてくれ」
\wとか\dでパターンマッチさせればいいんでない?
0845デフォルトの名無しさん
2006/10/24(火) 21:42:440846デフォルトの名無しさん
2006/10/24(火) 21:50:390847デフォルトの名無しさん
2006/10/24(火) 22:18:13m/\p{alpha}/
でマッチするんじゃなかったっけ?
0848デフォルトの名無しさん
2006/10/24(火) 22:25:18ええと、定石だけれど、DBI を使うといいんじゃないかな。
0849デフォルトの名無しさん
2006/10/24(火) 22:50:280850デフォルトの名無しさん
2006/10/25(水) 03:20:540851デフォルトの名無しさん
2006/10/25(水) 09:20:11テキストファイルにSQLが書いてあるのをperl経由で流したいって話だから
O/Rマッパーはいらないんじゃね?
0852デフォルトの名無しさん
2006/10/25(水) 09:52:350853デフォルトの名無しさん
2006/10/25(水) 13:31:19thx!
ただDBIを使ってSQL文を一文づつ実行してるプログラムは書いたことがあるのですが、
テキストファイルのSQLを流すサンプルが見つからなくてイマ混乱中ですた。
一生懸命探してみます。こんな教えて厨みたいな質問にかまってくれてありがとうございました!
0854デフォルトの名無しさん
2006/10/25(水) 13:34:140855デフォルトの名無しさん
2006/10/25(水) 16:58:32うーむ・・わからん漏れは厨房ネ申
不可能じゃないと分かっただけで収穫だ。
(;; @�u@)ノシ おはようビームっ!!
0856デフォルトの名無しさん
2006/10/25(水) 17:49:36if ( $hoge =~ /^abc/ ) {
のつもりで
$str = 'abc';
if ( $hoge =~ /^$str/ ) {
としたのですが、うまくいきません。/^\$str/としてもやっぱりだめ。
右辺を変数にするにはどうしたらいいのでしょう?
0857デフォルトの名無しさん
2006/10/25(水) 18:20:20それで間違っていない。何かのミスだと思うので再確認汁。
これだけじゃなんなので幾つかアドバイス
$strに入るのが正規表現じゃなくて単なる文字列なら/^\Q$str\E/としてエスケープしてやると吉。
逆に正規表現が入るならqr//を使うといいかもしれない。詳細はperlopをqrで検索。
0858デフォルトの名無しさん
2006/10/25(水) 18:23:470859デフォルトの名無しさん
2006/10/25(水) 18:44:21テキストファイルの中身を書き換えたり
せ、正規表現というか、そういう物の具体例か定石がたくさんあるサイトか安い本紹介して欲しいんですけど
0860デフォルトの名無しさん
2006/10/25(水) 18:48:260861デフォルトの名無しさん
2006/10/25(水) 19:00:19そうですか
確認してみます〜ありがとん
ヒントもありがとうです。
0862デフォルトの名無しさん
2006/10/25(水) 19:41:16【Perl,CGI】参考書籍 第三版
http://pc8.2ch.net/test/read.cgi/php/1030209573/
0863デフォルトの名無しさん
2006/10/25(水) 20:22:40自分はこの本しか持っていなけど、一応、重宝している。
正規表現ケーススタディブック
http://www.amazon.co.jp/gp/product/4839913870/
0864デフォルトの名無しさん
2006/10/25(水) 20:29:06print "入力してください";
my $line = <STDIN>;
chomp($line);
makearray($line);
print $#a;
}
sub makearray {
my $number = shift;
print $number, "個作成します\n";
my @a;
for ( 1.. $number ) {
push @a, "k";
}
@a = ();
}
上のような配列を作成するスクリプトを書いたのですが
ループを抜けてもプログラムのメモリを開放してくれません。
OSはwindowsXP SP2なのですがどのようにしてメモリを開放させれば
いいのでしょうか?
0865デフォルトの名無しさん
2006/10/25(水) 21:01:02なんでmakearrayの外で配列を参照しようとしてるの?
メモリが開放されてるかどうかはどうやって確かめたの?
0866デフォルトの名無しさん
2006/10/25(水) 21:04:28サンクス、いろいろ覗いてみるよ
>>863
ありがとう、
探してた本とピッタリっぽいから、注文してみる
0867デフォルトの名無しさん
2006/10/25(水) 21:06:41これは特に意味が無いです。検証用に書いたのを消し忘れました。
>メモリが開放されてるかどうかはどうやって確かめたの?
ウィンドウズ付属のタスクマネージャーで
仮想メモリとメモリ使用量の項目で確かめました。
又、ProcessWalkerというソフトでも同じ結果になりました。
0868デフォルトの名無しさん
2006/10/25(水) 21:21:04while(1){
&a;
print "Enterを押すと次のループに入ります";
my $in = <STDIN>;
}
sub a{
my @a = ();
my $text = "";
print "Enterを押すと256*20000byte(5Mbyte)の配列を確保します";
my $in = <STDIN>;
$text .= chr($_) for(0..255);
push(@a , $text) for(1..20000);
print "Enterを押すとブロックを抜けてメモリが開放されるはずです";
$in = <STDIN>;
}
0869デフォルトの名無しさん
2006/10/25(水) 21:53:44絶対GPLのライブラリとか使ってると思うんだが…
0870デフォルトの名無しさん
2006/10/25(水) 22:29:29?
だめでしょ。
0871デフォルトの名無しさん
2006/10/25(水) 22:46:14Perl言語に詳しい人に質問スレに回答しておいたよー
0872デフォルトの名無しさん
2006/10/25(水) 23:45:400873デフォルトの名無しさん
2006/10/26(木) 00:34:57テキストを1行ずつ読み、合致する文章があれば
置換するというプログラムを書いているのですが
うまくいかず困っております・・・
@ARRAY = ("01 100 200", "02 100 300") ;
@ARRAY_REP = ("01 100 200 300", "02 100 300 400");・
テキストを1行ずつ読み
配列ARRAYの中身と比較し、その文章があれば
その1行をARRAY_REPのの中の要素に置換したいのです。
例えばテキストの中身1行が
01 100 200 700 800
という行であった場合
ARRAY[0]の要素と合致するのでARRAY_REP[0]の中身で
01 100 200 300 800
というように置換したいのですがうまくいかず困っております・・・
どなたか分かるお方いらっしゃいましたらご教授お願いします。
0874デフォルトの名無しさん
2006/10/26(木) 00:42:58$HASH{"01 100 200"} = "01 100 200 300"
$HASH{"02 100 300"} = "02 100 300 400"
・・・
というのを作っておく。
テキストがハッシュのキーにあれば、そのハッシュの値で置き換えればいい。
0875デフォルトの名無しさん
2006/10/26(木) 00:47:36もしこの配列でやるならこんな感じ?
必要ならchompして。
open IN, "テキスト";
while (<IN>) {
s/$ARRAY[$_]/$ARRAY_REP[$_]/ for (0 .. $#ARRAY);
}
close IN;
0876デフォルトの名無しさん
2006/10/26(木) 00:51:27ありがとうございます!
ハッシュは難しそうだと断念しておりましたが
また勉強がてらやってみます。
回答どうもありがとうございました
0877デフォルトの名無しさん
2006/10/26(木) 01:02:38わかんねーな。
GPLのライブラリ(CGIモジュールとか)使ってるならソース公開必須じゃね?
0878デフォルトの名無しさん
2006/10/26(木) 01:21:060879デフォルトの名無しさん
2006/10/26(木) 01:31:38| This library is free software; you can redistribute it and/or modify
| it under the same terms as Perl itself.
terms as Perl itselfとはGPLとArtistic Licenseのデュアルライセンスのことだ
0880デフォルトの名無しさん
2006/10/26(木) 01:36:120881デフォルトの名無しさん
2006/10/26(木) 02:48:110882デフォルトの名無しさん
2006/10/26(木) 03:58:010883デフォルトの名無しさん
2006/10/26(木) 04:07:510884デフォルトの名無しさん
2006/10/26(木) 04:10:260885デフォルトの名無しさん
2006/10/26(木) 05:37:080886デフォルトの名無しさん
2006/10/26(木) 05:59:580887デフォルトの名無しさん
2006/10/26(木) 07:15:13213 :名無しさん@お腹いっぱい。:2006/10/25(水) 16:35:32
第一フィールドがmm/dd/yyyy
第二フィールドがhh:mm:ss
第三フィールドが""で囲まれたアカウント名
となっている。
「アカウント名が重複しているものは、その最新日付のみを残して、
他の重複行はすべて削除」
という具合にしたい。
uniqを使えばいいのかもわからないが、やっぱりわからない。
どうすればいいだろう。
08/11/2006 14:29:50 "yamamoto"
03/03/2006 06:40:53 "yamada"
05/17/2005 07:45:07 "yamada"
07/13/2005 04:18:04 "yamada"
07/13/2005 13:17:56 "yamada"
08/04/2005 11:03:05 "yamada"
08/11/2005 05:54:56 "yamada"
08/11/2004 07:58:53 "yamada"
12/07/2005 13:54:19 "yamada"
12/22/2005 00:26:49 "yamada"
08/05/2005 02:48:41 "kinosita"
08/05/2005 11:49:58 "kinosita"
08/05/2004 11:51:45 "kinosita"
08/06/2005 04:55:50 "kinosita"
02/21/2005 16:34:40 "akie"
02/21/2005 17:47:14 "akie"
0888デフォルトの名無しさん
2006/10/26(木) 07:50:28比較する必要がありそうだが、例のデータをみるとユーザ別に古い
ものから順にソートされているようにも見える。ソートされてるなら
いちいち日付と時間を見る必要はない。その辺の条件はどうよ。
0889デフォルトの名無しさん
2006/10/26(木) 09:12:48use Date::Manip;
my %e;
while (<>) {
my ($ymd, $hms, $u) = split;
my $t = ParseDate("$ymd $hms");
if (!exists $e{$u} || $t > $e{$u}->{t}) {
$e{$u} = { t => $t, lno => $., s => $_ };
}
}
for (sort { $e{$a}->{lno} <=> $e{$b}->{lno} } keys %e) {
print $e{$_}->{s};
}
ParseDate使わなくても6つの数字を取り出して並べ替えれば
比較できるからモジュール使うの嫌いな人はがんばれ。
0890デフォルトの名無しさん
2006/10/26(木) 10:15:06これを01〜09の範囲で取り除く方法を教えてください。
Googleで Perl 0 取り除く等で検索しましたが、わかりませんでした・・
0891デフォルトの名無しさん
2006/10/26(木) 10:27:180892デフォルトの名無しさん
2006/10/26(木) 10:46:110893デフォルトの名無しさん
2006/10/26(木) 13:57:37雲丹板のシェルスクリプトスレで
答え出てんじゃねーかYO!!
0894デフォルトの名無しさん
2006/10/26(木) 14:45:51あってもいいのではないか。
0895デフォルトの名無しさん
2006/10/26(木) 17:37:53print文の最後を改行してくれるやつがあったと思うのですが
perlで実現するには、どうすればいいですか?
使い捨てのスクリプトを書いてるときいちいち改行を最後に付け足すのが面倒です。
0896デフォルトの名無しさん
2006/10/26(木) 17:45:06use strict;
use warnings;
print "HOGE";
0897デフォルトの名無しさん
2006/10/26(木) 17:59:09理解してから使えよ。
0898デフォルトの名無しさん
2006/10/26(木) 18:13:080899デフォルトの名無しさん
2006/10/26(木) 19:18:54globe
I BELIVE";
m/dance$.*^I/ms and print "1\n";
m/dance\$.*^I/ms and print "2\n";
m/dance\n.*^I/ms and print "3\n";
を実行すると、3 としか表示されないのですが、正規表現の `$' は正規表現の
最後でしか許されないのでしょうか?
perl-5.8.7 を使用しています。
よろしくお願いします。
0900デフォルトの名無しさん
2006/10/26(木) 19:28:00qr/dance$.*^I/ms
qr/dance\$.*^I/ms
qr/dance\n.*^I/ms
をそれぞれprintして見比べて見れ。
0901895
2006/10/26(木) 20:21:56あーーーでも"-l"だと多分使い捨てスクリプト中の全てのprintに影響
しチャ運ですよね。改行したくない場合もあるし。
alias みたいにちょこっとだけ動作を加えた関数を作れんもんかと思って
聴いてみたんですが、自分ではサブルーチン作るぐらいしか思いつかないし。
0902デフォルトの名無しさん
2006/10/26(木) 20:35:380903デフォルトの名無しさん
2006/10/26(木) 21:37:300904デフォルトの名無しさん
2006/10/26(木) 21:47:05Perlで復号化しなくちゃならなくなったんだけど、Crypt::DESじゃ
復号できないっす。鍵と初期化ベクタはわかっています。
何か良い方法知ってる人はいませんか?
0905895
2006/10/26(木) 22:08:17まさにこれです!
Perl6からは use しなくていいんですね。辛抱します。
>>902
こんなのが存在するのを知りませんでした。
スクリプトの書き方自体が変わりそうです。
ありがとうございました。
0906デフォルトの名無しさん
2006/10/26(木) 22:14:35じゃ駄目なん?
0907デフォルトの名無しさん
2006/10/26(木) 22:35:31のような入力がある時、
括弧内の空白文字だけアンダースコアに変換する
スクリプトの書き方を教えてください。
ちなみに上の例だと
a b(cd_ef) g(hij) k(lm_no_pq) r s(tu)
となって欲しいんです。
お願いします。
0908デフォルトの名無しさん
2006/10/26(木) 22:45:39s{\(.*?\)}{$_ = $&; tr/ /_/; $_}ge
0909907
2006/10/26(木) 22:59:40ありがとうございます!
置換の中でeオプションを使うのがコツなんですね。
今日数時間考えてもわからなかったのに10分程度で解答をもらえるとは…。
精進します。
0910デフォルトの名無しさん
2006/10/26(木) 23:10:32わかりやすく解説しているところがあれば教えてもらえないでしょうか?
どちらを使うべきなんでしょうね…
perldoc perllexwarn
0912デフォルトの名無しさん
2006/10/26(木) 23:49:030913デフォルトの名無しさん
2006/10/26(木) 23:58:430914デフォルトの名無しさん
2006/10/27(金) 00:13:340915デフォルトの名無しさん
2006/10/27(金) 01:39:49回答ありがとうございます。
ドキュメントの解読と自分が理解するための検証に時間がかかりました… orz
概ね、-wは全体に、use warningsは部分的に効くという感じでOKでしょうか?
結局みなさんはどちらを使ってますか?
そうでなければwarnings
もちろん5.6以降でだけど
0917デフォルトの名無しさん
2006/10/27(金) 12:34:17(?ms-xi:dance*^I)
(?ms-xi:dance\$.*^I)
(?ms-xi:dance\n.*^I)
となりました。perlop と perlre を読んでみましたが、よくわからないです…。
もうちょっと、ヒントもらえませんでしょうか?
0918デフォルトの名無しさん
2006/10/27(金) 13:54:25それはあんまり関係なくて、$.と続けて書くと変数$.が埋め込まれるから
期待しない動作になっていると思われる。$(?:).として変数に解釈されない
ようにするか、m'...'の形にして変数展開を抑制するとよい。
0919デフォルトの名無しさん
2006/10/27(金) 14:08:40中身を直接書き換えることができるってことは、配列のコピーを渡すので
はなく、各要素へのポインタを渡しているって理解でOkですか?
&func (@array)をCで書けば、
func (&array[0],&array[1],&array[2],,,,);
0920デフォルトの名無しさん
2006/10/27(金) 14:25:57とすると、$_ にコマンド入力した文字が入っているようなのですが、
<>;
print ;
としても入っていないのは何故ですか?
0921デフォルトの名無しさん
2006/10/27(金) 14:32:10while () や for (;;) の条件に書いたときだけ特別扱い。
詳しくはperldoc perlopのI/O Operators参照。
0922デフォルトの名無しさん
2006/10/27(金) 14:45:03サンクス
0923デフォルトの名無しさん
2006/10/27(金) 19:25:49| only-once rule of "?PATTERN?" applies. If "'" is the delim-
| iter, no interpolation is performed on the PATTERN.
知りませんでしたー。ありがとうございました。
0924デフォルトの名無しさん
2006/10/27(金) 20:51:381\n2\n3\n4\n5\n
-----------------------------------------
次に、下のようにlist.txtを読み込んで
open(OPEN,"<list.txt");
read(OPEN,$list,-s OPEN);
close(OPEN);
$list =~ s/\\n/\n/g;
print $list;
としても
下のように表示されません。、
読み込んだ時点で\nを文字列として認識してるみたいですが
改行として出力したいです
1
2
3
4
5
0925デフォルトの名無しさん
2006/10/27(金) 21:32:22readしたあとs///で置換する前の$listの値ぐらいは確認しろよ。
0926デフォルトの名無しさん
2006/10/28(土) 02:12:58遅くなりましたがありがとうございました。
自分の場合は自作ライブラリ全部にwarningsプラグマを書いてるのと
人が作った物の面倒は見たくないのでuse warningsで行こうと思います。
すっきりしますた〜
0927デフォルトの名無しさん
2006/10/28(土) 10:26:03それと/usr/bin/perlが15KB少々ですがperl自体のサイズってこんなもので
配布サイズのほとんどが標準モジュールとmanが占めていると考えて宜しいのでしょうか。
0928デフォルトの名無しさん
2006/10/28(土) 17:47:28perl の「本体」は lib/perl5/5.x.x/*/CORE/ 辺りに
置かれている libperl.so や bin/perl5x.dll だ。
0930デフォルトの名無しさん
2006/10/29(日) 14:56:26そのリストにあるIPにも関わらず書き込みをされるのですが,どんな原因が考えられますか?
例えば,自分のIPが200.10.10.10の場合,正規表現で指定して(200.*.*.*)もきちんと自分は拒否されます。
それなのに,いくつかすり抜けてくる迷惑書き込みは,一体どのようにしてるのでしょうか?
当然,直接そのIPを指定しても,効果がありません。(上の場合なら,200.10.10.10)
考えられるのは,�@Perlが取得するIPアドレスの関数が偽装される。←可能なんでしょうか??
�A違うCGIで直接ログファイルに書き込まれている。
というくらいしか思いつきません。
�@はともかく,�Aに関しては,プロバイダがHi-HOなので,こちらで細かいパーミッションの指定ができません。(たぶん)
他にも原因や対策がありますか?
0931デフォルトの名無しさん
2006/10/29(日) 15:07:570932デフォルトの名無しさん
2006/10/29(日) 15:30:22CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
0933930
2006/10/29(日) 15:57:47WebProg板のどこかで聞いてみます。
0934デフォルトの名無しさん
2006/10/30(月) 13:02:49eachを用いて処理する時に途中で(if が真になり)
やめた場合、次にeach(%xxx)) を呼び出した時に全部処理されませんよね?
$xxx{'t'} = "t"
$xxx{'b'} = "b"
二回目の時は真にならないのですがそういう仕様なのでしょうか?
while (($key, $value) = each(%xxx)) {
if ($key eq "t") {
return $value;
}
}
0935デフォルトの名無しさん
2006/10/30(月) 13:11:12これって相手が低速の場合、読み終わるまでの時間は変化しますか?
10MBぐらいで相手が10分かかる場合とか
0936デフォルトの名無しさん
2006/10/30(月) 13:26:440937デフォルトの名無しさん
2006/10/30(月) 13:38:59そういう仕様。
eachの繰り返しを途中でやめてまた最初からやりたければリセットが必要。
リセットするには(voidコンテキストで)keys %xxxしろということになっている。
詳しくはperldoc -f eachやperldoc -f keysをよく読め
0939デフォルトの名無しさん
2006/10/30(月) 14:47:44そうでしたか
使いにくいですね
0940デフォルトの名無しさん
2006/10/30(月) 16:10:15使いやすいか使いにくいかを判定する能力はない。
0941デフォルトの名無しさん
2006/10/30(月) 16:11:29keyとvalueが一緒ってことですか?
0942デフォルトの名無しさん
2006/10/30(月) 16:14:54つか each の仕様で困ったことないなあ……。
0943デフォルトの名無しさん
2006/10/30(月) 18:32:58sort { $b->[1] <=> $a->[1] }
map { [ $_, $priority{$_} // 10 ] }
_plugins;
return map { $_->new }
sort { ( $priority{$b} // 10 ) <=> ( $priority{$a} // 10 ) }
_plugins;
上の二つだったらどっちがいいと思う?ベンチマーク結果じゃなく読みやすさ優先で。
_pluginsはプラグインのリストを返す関数で、%priorityに優先度が入ってる。
$x // $y はdefined $x ? $x : $yになるようにソースフィルタを書いてある。
0944デフォルトの名無しさん
2006/10/30(月) 20:02:45my $socket = IO::Socket::INET->new(PeerAddr => 'localhost', PeerPort => 6544, Proto => 'tcp');
my $live : shared = 1;
my $t2 = undef;
die "接続できませんでした。\n" if ( ! $socket );
{
print "connect\n";
#### K (Kill) を受信したら、action 処理を中断させるスレッドを立てる
$t2 = threads->create(sub {
while(<$socket>)
{
print "受信: $_";
last if (!defined($live));
if ($_ =~ /^[kK]/){ \&abort_action(); }
}
0945944
2006/10/30(月) 20:03:47$socket->close(); # これが動いてくれない。でもスレッドは終了しちゃう。
});
}
\&action(); # スレッドから終了させたい。
$live = undef;
}
ActivePerlでこんなかんじの処理を書きました。
サーバーからのKill信号を受信して、長時間かかる処理を中断させるという処理です。
で、処理の中断まではちゃんと動くのですが、$socket->close を呼んでも $socket が閉じてくれません。
$socketをちゃんと閉じるにはどうすればいいのでしょうか?おしえてください。
0946デフォルトの名無しさん
2006/10/30(月) 21:01:59だよねぇ。 根本的にeachの用途を間違ってるよね。
0947デフォルトの名無しさん
2006/10/30(月) 21:43:44プラグインが1万個あるんじゃなければ後者でいいや。なんとなく無駄
っぽいけど添え字で見難いよりはややましな気がする。
自分なら、はじめから優先度順にならべたプラグインの配列をつくるか、
プラグイン->priority で優先度取れるようにするかな。
0948デフォルトの名無しさん
2006/10/31(火) 05:29:00>スレ違いだけど、サーバー側の処理は相手の速度には関係ないでしょう
スレ違いだけど、クライアント側が遅いとサーバ側も引きずられるでしょ。
0949デフォルトの名無しさん
2006/10/31(火) 08:04:27シュワルツ変換になれてるヒトだったら前者。
それよりも
> $x // $y はdefined $x ? $x : $yになるようにソースフィルタを書いてある。
sort { ( $priority{$b} || 10 ) <=> ( $priority{$a} || 10 ) }
|| 適用しないの?
0950デフォルトの名無しさん
2006/10/31(火) 09:18:49priorityが0のことがあるんじゃないの?
0951デフォルトの名無しさん
2006/10/31(火) 10:42:25バカなの?
CGIが全部データを書き出してからクライアントに送信されるだろ?
だからファイル全部読み込んだらCGIプロセスはおわるだろ?
0952デフォルトの名無しさん
2006/10/31(火) 11:14:330953デフォルトの名無しさん
2006/10/31(火) 11:19:550954デフォルトの名無しさん
2006/10/31(火) 11:38:060955デフォルトの名無しさん
2006/10/31(火) 12:19:34あそういうことか
0957デフォルトの名無しさん
2006/10/31(火) 13:05:46>>948はとりあえずおかしい
送信までのプロセスや回線速度、戻ってきたものの処理(表示とか)
に時間はかかるかもしれないが、そのせいでサーバ側の処理が遅れることはない
サーバ側がレスポンスを待つようなら別だけど。
で、合ってますか?
>>951
しむらー!出力!出力!!
0958デフォルトの名無しさん
2006/10/31(火) 13:19:59もうすこし仕組みを勉強した方がいいよ。
0959デフォルトの名無しさん
2006/10/31(火) 13:31:53わかってんの?wwwwwww
0960デフォルトの名無しさん
2006/10/31(火) 13:38:57教育的指導を行なう際は、ヒントや、学習を始めるポイントを提示しましょう。
0962デフォルトの名無しさん
2006/10/31(火) 13:58:53送るようなコードは書かずに
while (バッファに適当な量読む) {
バッファを出力
}
みたいな書き方になるだろう。出力はは最終的にはOSのTCPスタックまで行くわけ
だが、クライアント側が読み出して残りがある一定量以下になるまではブロックする
ので、ここで待たされて先にはいかない。したがってファイルの読み出しも間欠的に
ちょろちょろ行われることになる。かかる時間をみるとクライアント側の読み出し時間
で大体決まる。読み出しのためにCPUなりIOなりが働いている時間はそのうちのごく
わずかではあるが。
もちろんメモリを豪華に使って最初に全部読み込んだり、mmap使ったりsendfile使ったり
するとまた話はいろいろ違ってくるだろうがね。
0963デフォルトの名無しさん
2006/10/31(火) 14:04:290964デフォルトの名無しさん
2006/10/31(火) 14:09:36罰として次スレ立てなさいw
0965デフォルトの名無しさん
2006/10/31(火) 14:13:30出来た物からポンポン放り込み、宅配業者はそれを自分のペースで
取ってくんでしょ。
0966デフォルトの名無しさん
2006/10/31(火) 14:32:31宅配ボックスがパムパムになるとプログラムは宅配業者を待つしかできなくなる。
0967957
2006/10/31(火) 14:56:41Perlについての質問箱 28箱目
http://pc8.2ch.net/test/read.cgi/tech/1162273941/
0968デフォルトの名無しさん
2006/10/31(火) 15:12:29現実的にパンパンになるweb出力なんてあるのかい?
ストリーミングとかかい?
って、質問が何を10M、どう出力してんのか曖昧すぎて
話しにならん。 もうしーらねっと。
0969948
2006/10/31(火) 16:21:00>>>948はとりあえずおかしい
確かに日本語が曖昧だった。
オレはクライアントへの出力について言ったつもりで、
ファイルreadのつもりじゃなかった。
(ファイルreadがクライアント側と関係ないのは当たり前だと思ったので)
>>962が書いていることで良いんじゃまいか。
0970935
2006/10/31(火) 16:24:50とあるアップローダーを無料サーバーで運営しています。
認証しないとダウンできないようにCGIを介してダウンロードさせる
仕組みなのですが無料サーバーゆえに30秒以上たつとプロセスが自動で
終わってしまうのです。サーバー側のバッファに溜まると思ったのですが
違うようですね。低速の方の場合は途中で切れてしまうようなので他の事
考えて見ます。ありがとうこざいました。
CGIはだだ
ファイルを少し読み込んで出力のくりかえしです。
0971デフォルトの名無しさん
2006/10/31(火) 16:38:39CGIの話は>>1のテンプレに従って他のスレでやってください。
0972デフォルトの名無しさん
2006/10/31(火) 16:40:350973デフォルトの名無しさん
2006/10/31(火) 17:11:50アドレスとソースの取得はどのようにやればいいのでしょうか?
0974デフォルトの名無しさん
2006/10/31(火) 17:38:080975948
2006/10/31(火) 17:39:510976943
2006/10/31(火) 18:12:21せいぜい100程度のオーダーなので、シュワルツ変換持ち出すまでもないかなぁ。
Module::Pluggableをつかっているので、はじめから優先度順に並べるとかできないのです。
plugin->prioriryも考えたのですが、優先度の高い順に試して、最初にマッチしたプラグインを
使うようにしたので、その案は取りやめました。
>949
自分で書いてみてどっちにしようか悩んでいたので、参考になりました。
>950さんが言っているとおり、priotrityが0の場合があるので、||は使えませんでした。
とりあえずシュワルツ変換を使った方法にしようと思います。ありがとうございました。
0977デフォルトの名無しさん
2006/10/31(火) 18:30:38CSVファイルのデータを元に、テキストファイル内の語句の検索・置換を行いたい。
CSVファイル(数十万行)
あ,い
う,え
・・・・・
確認なしで一括置換
どのようにすればよいでしょうか?
もしくは、どこか参考になるサイトをご紹介ください。
0978デフォルトの名無しさん
2006/10/31(火) 18:38:34そのCSVファイルはデータとしてカンマや改行を含む? 含まない?
含まないなら本当のCSVとして全部解釈する必要がなくなるから
処理は簡略化できるよ。
0979デフォルトの名無しさん
2006/10/31(火) 18:43:410980デフォルトの名無しさん
2006/10/31(火) 18:51:200981デフォルトの名無しさん
2006/10/31(火) 19:30:16エクセル、秀丸でやってみたんですけど、実行速度が遅すぎてどうにもなりません
そこで、文字列処理に強いと謳われている、perlで処理すれば、パッとできるのかな、と。
perlもエクセル程度の速度ですか?
そんなもんなんですか? perlって・・・・・・
0982デフォルトの名無しさん
2006/10/31(火) 19:47:22perlの方が断然早いはず。
ファイルの読み書きと正規表現の勉強が必要だね。
perl入門と言ってるまともなサイトなら、
だいたいどこでもやり方は書いてあると思う。
0983デフォルトの名無しさん
2006/10/31(火) 20:02:411万行処理したぐらいで止まるようなアプリって、どうなんでしょうね
perlに期待です。
0984デフォルトの名無しさん
2006/10/31(火) 20:29:400985デフォルトの名無しさん
2006/10/31(火) 20:46:16emacs
0986デフォルトの名無しさん
2006/10/31(火) 21:48:270987デフォルトの名無しさん
2006/10/31(火) 21:51:51主要文字コードの文字と数値の対応表を全部暗記すればバイナリエディタでもおk
0988デフォルトの名無しさん
2006/10/31(火) 21:54:47vim
0989デフォルトの名無しさん
2006/10/31(火) 21:58:23じゃあ楽だな。
速度については処理によって微妙に変わる。
ところで具体的になにをどうしたいの?
0990デフォルトの名無しさん
2006/10/31(火) 22:03:38http://search.cpan.org/
でサチってみると幸福になれる。
0991デフォルトの名無しさん
2006/10/31(火) 23:17:33日本語でおk?
0992デフォルトの名無しさん
2006/10/31(火) 23:35:01@retsu = <FH>;
push(@hai, shift @retsu) until ($retsu[-1] eq "\n");
こうしたのですが、いかにも効率が悪そうです。もっと良い方法はありますか。
0993デフォルトの名無しさん
2006/10/31(火) 23:40:450994デフォルトの名無しさん
2006/10/31(火) 23:42:530995デフォルトの名無しさん
2006/10/31(火) 23:50:09もう何ヶ月も考えていますが浮かびません。具体例をください。
0996デフォルトの名無しさん
2006/11/01(水) 00:05:21空行前 ? push (@前,$_) : push (@後,$_);
}
0997977
2006/11/01(水) 00:05:53;;
0998デフォルトの名無しさん
2006/11/01(水) 00:07:220999デフォルトの名無しさん
2006/11/01(水) 00:08:461000デフォルトの名無しさん
2006/11/01(水) 00:09:2410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。