Perlについての質問箱 38箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/09/21(日) 12:22:12"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
( WEBプログラミング板 http://pc11.2ch.net/php/ )
CGIの質問は答えが Perlと全然関係ない話に帰着する場合が
多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html
● 2008/09/21 現在の最新版(安定版): 5.10.0
● 2008/09/21 現在の開発版: 5.9.5
▼ 前スレ
Perlについての質問箱 37箱目
http://pc11.2ch.net/test/read.cgi/tech/1218449440/
リンク集は>>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは>>5-6 あたり
0002デフォルトの名無しさん
2008/09/21(日) 12:22:38Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/
[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.ascii.co.jp/books/books/detail/4-7561-3057-7.shtml (修正)
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/
[オンラインマニュアル]
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi (停止中)
perldoc.jp: ttp://www.perldoc.jp/
perldoc.com: ttp://www.perldoc.com/
0003デフォルトの名無しさん
2008/09/21(日) 12:23:02CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl 5.8 Unicodeメモ]
ttp://www.rwds.net/kuroita/program/Perl_unicode.html (修正)
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004デフォルトの名無しさん
2008/09/21(日) 12:23:32# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1.の行を入れると、DOS窓への日本語出力は簡便になりますが、
# ソースファイル名に非ANSI文字が含まれる場合にdie 文の出力が失敗します。
# ※2.OSに渡す文字列(ファイル名,dosコマンドのオプションなど)は、
# この例のようにcp932でエンコードする必要があります。
0005デフォルトの名無しさん
2008/09/21(日) 12:24:392 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/
0006デフォルトの名無しさん
2008/09/21(日) 12:25:0721 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/
27 ttp://pc8.2ch.net/test/read.cgi/tech/1157874614/
28 ttp://pc8.2ch.net/test/read.cgi/tech/1162273941/
29 ttp://pc11.2ch.net/test/read.cgi/tech/1166708139/
30 ttp://pc11.2ch.net/test/read.cgi/tech/1173880452/
31 ttp://pc11.2ch.net/test/read.cgi/tech/1181500187/
32 ttp://pc11.2ch.net/test/read.cgi/tech/1186995713/
33 ttp://pc11.2ch.net/test/read.cgi/tech/1192463997/
34 ttp://pc11.2ch.net/test/read.cgi/tech/1199977642/
35 ttp://pc11.2ch.net/test/read.cgi/tech/1208674881/
36 ttp://pc11.2ch.net/test/read.cgi/tech/1215569470/
37 ttp://pc11.2ch.net/test/read.cgi/tech/1218449440/
0007デフォルトの名無しさん
2008/09/21(日) 12:37:520008デフォルトの名無しさん
2008/09/21(日) 14:28:510009デフォルトの名無しさん
2008/09/21(日) 14:42:330010デフォルトの名無しさん
2008/09/23(火) 14:43:26「PHP()笑ですか。Javaとかできますか?」って言われるわww
ちなみにPerlの話題なんて微塵もでません。言っても「へぇ…」程度
あんまりJavaJava言われるから、Javaのコードすら書いたことないのに
いま勉強中です!資格取得めざしてます!!なんて言うようにしてみたら
Javaでちょっとコード書いてきて見せてとか言われてしまって、
そこで初めてJava触ったけど
MVCアーキテクチャとかっていうやつだっけか。たしかにこれは面倒だなw
仕事でいろいろ分業するのにはこういう作りはすごくよさそうだけど
個人で趣味でやるならPHPで十分目的は達成できるしPHPでいいだろうな
0011デフォルトの名無しさん
2008/09/23(火) 15:10:14xxxxxxみたいな関数とかあります?
open my $fh, "data.txt";
$file_name = xxxxxx $fh;
print $file_name; #=>data.txt
0012デフォルトの名無しさん
2008/09/23(火) 15:23:53ファイルハンドルから取得する必要がある?
0013デフォルトの名無しさん
2008/09/23(火) 15:47:31ないですか。
ファイルロックをする関数でflockが有効ならflockを、そうでなければ、ファイル名をベースにした
ディレクトリ作成をしようと思いました。
sub lock {
my $fh = shift;
if ($valid_flock) {
flock($fh, 2);
} else {
my $file_name = xxxxxx $fh;
my $lockdir = $file_name."dir";
my $retry = 5; # リトライ回数セット
while (!mkdir($lockdir, 0755)) { # 作成。出来なければ待つ
if (--$retry <= 0) { &error("BUSY"); } # 5回ダメならあきらめる
sleep(1); # 1秒待つ
}
}
0014デフォルトの名無しさん
2008/09/23(火) 16:37:34flock() が使えない環境で動かす必要があるなら、最初から他の方法に統一したほうがいいように思えます。
flock() だけ分岐させても、どちらに分岐するかによって flock() 依存の機能の利用可否が異なりますから面倒になるだけです。
それはそれとして、その構成だと呼ぶ側で既に open() してるわけですから、
引数にファイル名を渡してやればいいんじゃないですかね。
0015デフォルトの名無しさん
2008/09/23(火) 17:00:49flockが使える環境ならば、ファイルロック機能が強固なflockを使ってもらい、使えない場合は、
ディレクトリ作成方法でまかなおうかと思いました。
ファイル名も引数で渡す方法でいこうと思います。
0016デフォルトの名無しさん
2008/09/23(火) 17:27:20それともハッシュでやるしかないんでしょうか?
0017デフォルトの名無しさん
2008/09/23(火) 17:39:20cpan にあるなあ
ttp://search.cpan.org/~zenin/enum-1.016/enum.pm
求めるものかどうか知らんけど。
0018デフォルトの名無しさん
2008/09/23(火) 17:40:38あーこれグッドです。どうもありがとうございます。
0019デフォルトの名無しさん
2008/09/23(火) 18:03:50やっぱりPerlならHashでやるのが一番いいのかもね
0020デフォルトの名無しさん
2008/09/23(火) 18:52:06いや、なんでもない
0021デフォルトの名無しさん
2008/09/24(水) 10:13:37<q cite="http://www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html#Symbol_Tables">
シンボルテーブルの別の使い方は、“定数”スカラーを生成するためのものです。
*PI = \3.14159265358979;
この後、$PIを変更することはできません。
</q>
#!/usr/bin/perl -w
use strict;
use constant FOO => 'foo!';
our $BAR; *BAR = \'bar!';
print "${\FOO}$BAR\n", eval { $BAR = 'bar?' } || $@;
__END__
0022デフォルトの名無しさん
2008/09/24(水) 10:30:46>>16 からの話の流れを読むと、
列挙型が欲しくて enum (>>17-18) を使ったけれど、enum の提供する定数はサブルーチンベースなのでパターン内に展開できない(>>19)。
それに対し >>20 が控え目に打開案を示した、という流れ。
シンボルテーブルベースの列挙型を新たに実装する手もあるし、
Readonly.pm を使う手もあるけど、
変にこだわりさえしなきゃ >>19 の通りハッシュで済む話だね。
0023デフォルトの名無しさん
2008/09/26(金) 06:39:52perlで書くとこうなる
0024デフォルトの名無しさん
2008/09/26(金) 11:14:170025デフォルトの名無しさん
2008/09/26(金) 14:32:07read.cgiはCで書かれてるつーの。
0026デフォルトの名無しさん
2008/09/26(金) 15:14:43つ、通報しま
0027デフォルトの名無しさん
2008/09/26(金) 15:42:10頭がおかしい人間がこの掲示板には多いよね。
>>23のリンク先は、「cでperlみたいに正規表現を使いたいんだけどどうすりゃ良いの?」
というひろゆきの質問スレなのに、それがわからない。
煽りでなしに、病院で診察を受けた方が良い。
0028デフォルトの名無しさん
2008/09/26(金) 15:54:38自分でそこで質問する、って
最強だよな。
0029デフォルトの名無しさん
2008/09/27(土) 08:14:06なぜこれがエラーになってしまうのでしょう?
do{last}for(1)
これはおkなのに
0030デフォルトの名無しさん
2008/09/27(土) 10:17:16以下のように
-------------
(比較元) 我が輩は猫である。
我が輩は人である。 -> 90% ほど合致。
我輩は猫である。 -> 90% ほど合致。
猫である我が輩は。 -> 5% ほど合致。
-------------
ように算出できないでしょうか?
0031デフォルトの名無しさん
2008/09/27(土) 18:27:16「そしてもちろん、Perlにはそのほかにもたくさんデザイン上の
奇妙なところがある。たとえば「コンテキスト」を見るといい。そ
れはラリーがシェルスクリプトからコピーしたN変数ネームス
ペースやシジルによるデリファレンスのようなおかしな決断の
ぞっとする副産物だ。Perlでは、すべてのオペレータ、すべて
の関数、すべての操作が、その「コンテキスト」に従い、6つの
うちのランダムな1つの仕方で振る舞う。与えられたコンテキス
トにおいて特定の操作がどう振る舞うかを支配するルールや
ヒューリスティクスというのは存在しない。あなたは単にすべて
暗記しておくしかないのだ。
例がほしい? スカラーコンテキストでハッシュにアクセスすると
、分子が割り当てられたキーの数、分母がバケットの数となっ
ている分数を内容とする文字列が得られる。クジラのはらわた
だ。そう言ったでしょ。」
0032デフォルトの名無しさん
2008/09/27(土) 18:28:54を読んで、「ほんとかよ?」と思ったので実験してみた。
my $a;
my %b;
%b=qw (a b
c d
e f
g h);
$a=%b;
print "$a\n";
実行結果。
4/8
本当だ!
この仕様考えたヤツはいったい何が不満だったのか?
0033デフォルトの名無しさん
2008/09/27(土) 18:50:31Levenshtein距離とか
0034デフォルトの名無しさん
2008/09/27(土) 19:33:23Javaで言えばただのtoStringじゃん
0035デフォルトの名無しさん
2008/09/27(土) 19:38:220036デフォルトの名無しさん
2008/09/27(土) 20:54:49コードの自動補完とかできるやつ。
0038デフォルトの名無しさん
2008/09/27(土) 23:04:10do ~ while 構文(及び while 修飾子)で last したければ
% perl -le '{ do{last} while (1) } ;'
みたくブロックで囲む必要がある。
詳しくは、 perlsyn の while の項を読め。
ちなみに next の時は、
% perl -le 'do{{next}} while (1) ;'
B::Deparse で syntax OK になる分タチ悪がね。
% perl -MO=Deparse -le 'do{last}while( 1 ) ; '
(略)
-e syntax OK
つか do ~ while 構文なんて使うなよ…
0039デフォルトの名無しさん
2008/09/27(土) 23:15:210040デフォルトの名無しさん
2008/09/27(土) 23:27:27酒飲んで書き込むもんじゃねえなあ
0041デフォルトの名無しさん
2008/09/28(日) 00:26:39while(1)・・・でいいのをわざわざdo・・・while(1)で書いてるくらいだから、
よっぽど、do-while文が好きだったんだな。どの言語の影響だ?
Perlのdo-while/untilループは通常のループ制御が使えんから、使い物にならんよ。
>>38みたく、みっともないことになる。
0042デフォルトの名無しさん
2008/09/28(日) 00:35:15@Exportに全関数名を入れるのは骨が折れるのでこの方法は避けたいです。
0043デフォルトの名無しさん
2008/09/28(日) 01:25:25前者は任意の文字が1個以上続くというのはわかるのですが、後者がわかりません。
よろしくお願いします。
0044デフォルトの名無しさん
2008/09/28(日) 01:59:56最長と最短
0045デフォルトの名無しさん
2008/09/28(日) 02:26:47Perlは関数とか実行時に動的に割付可能な言語だから、いちいち名前を列挙するのが当然と思われ。
ま、俺もPerlあんま詳しくないんだけど、自動で全部というのはプラクティスとしてありえないと思う。
強引にやるなら、コンパイル時にシンボルテーブルのコードっぽいやつをとりあえず
@EXPORTに突っ込むことが考えられるが、こんなことやってるのいままでPerl関係のコードで見たことがない。
見たことがないということは、やらない方がいいということ。
@EXPORT = map {*{$_}{NAME}] grep {*{$_}{CODE}} values %PACKAGENAME::
PBPにサブルーチンにEXPORT属性を設定する方法が紹介されているので、ここらあたりで
妥協できないか。
0046デフォルトの名無しさん
2008/09/28(日) 08:59:51オブジェクト指向化推奨されてる。
EXPORTするのは定数ぐらいにした方がいい。
0047デフォルトの名無しさん
2008/09/28(日) 09:47:27全部大文字のシンボルを@EXPORT_OKに追加するとかそんなの。
いちいち列挙するのだるかったのでつい魔が差した
0048デフォルトの名無しさん
2008/09/28(日) 21:15:00http://namidame.2ch.net/test/read.cgi/news/1222604031/
0049デフォルトの名無しさん
2008/09/29(月) 01:05:31やはり全部書くべきですか。ただ面倒というだけで問題は無いのでひとまずはそれで行こうと思います。
PBPというのはPerl Best Practicesですね。まだ読んだことが無いので手を出してみます。
>>46
薄学のためオブジェクト指向についてまだよく分かってないのですが、
確かに全関数をエクスポートするくらいならオブジェクト指向で組めばよい気がしてきました。
まだ関数名の衝突という事態には当たったことはありませんが、
オブジェクト指向で組むことも考えてみようと思います。
0050デフォルトの名無しさん
2008/09/29(月) 08:03:59PHPを「劣った」言語だと考える人がいます。
それについてはどう思いますか。
0051デフォルトの名無しさん
2008/09/29(月) 11:08:455.2と5.3のマイナーバージョン違いでさえ大幅に違うんだからさ。
0052デフォルトの名無しさん
2008/09/29(月) 11:40:15そしてプログラミングセンス的に劣った奴でも簡単に扱えるのは良いんだか悪いんだか・・・
Perl以上に出来る奴と出来ない奴の差が激しいかもね
無駄に関数多いけど新しいものをどんどん取り入れようとしてる姿勢は良いと思う
が、ますます冗長になっていく・・・
某社ではプログラマにはPHPは使わせてなかった
あんなのはHTMLのコーダーやデザイナーが埋め込みで使うスクリプトだ、と
極論ではあるがそういう使われ方が結構多いんじゃないか?
0053デフォルトの名無しさん
2008/09/29(月) 11:54:26ただ、Perlと同じく継ぎ接ぎの酷さが見えてきた感じはする。
0054デフォルトの名無しさん
2008/09/29(月) 22:26:06同様の問題は、PerlやPHPに限らずRuby,PythonとかC/C++とかも多かれ少なかれ抱えてると思う。
0055デフォルトの名無しさん
2008/09/30(火) 07:11:06使ってる?
0056デフォルトの名無しさん
2008/09/30(火) 08:21:44ここみたら、perlのエディターが
Perl
* EPIC
* PerlBuilder
* PerlComposer
* Perl Editor
* Perl Express
* Open Perl IDE
* OptiPerl
* Zeus
こんなに紹介されてるんだけど、どれが最強?
0057デフォルトの名無しさん
2008/09/30(火) 08:51:27以下のコードのバグを見つけよ
(制限時間15秒)
---------------------------------------
for ( my $a=1; $a<=10; $a++ ) {
print "$a\n" if $a=3;
}
0058デフォルトの名無しさん
2008/09/30(火) 09:01:22ここに書いてあるんだが、ひょっとして
モジュール同士で相性が悪いってことはあるのか?
もしそれが本当だとしたら、モジュールなんでもかんでも
いれたり使ったりすると原因不明のバグに悩まされることにも
つながりかねないのか?
0059デフォルトの名無しさん
2008/09/30(火) 10:08:24if $a==3 かな?
15秒以内でみつけたから、俺、上級?
0060デフォルトの名無しさん
2008/09/30(火) 13:06:08@arr = (1, 2, 3, 4, 5);
$del_element = 3;
($del_elementで指定した要素を削除する処理)
print "@arr"; #=> 1 2 3 5
0061デフォルトの名無しさん
2008/09/30(火) 13:08:48splice
0062デフォルトの名無しさん
2008/09/30(火) 13:21:49�d
できました
0063デフォルトの名無しさん
2008/09/30(火) 13:41:24ってなんなのかなぁ?
0064デフォルトの名無しさん
2008/09/30(火) 13:48:14SwitchとAcme::Comment がソースフィルタタイプのモジュールだからだろ?
ソースフィルタタイプなんて一個でも気持悪い(元のコードを改変すんだぜ?)のに
モジュールの二段重ねとか、そりゃ危険は高かろう。
つか、フィルタタイプだろうとなかろうと、cpan.searchでフィックスしてない
バグくらいは閲覧してから入れるか否かの判断しろよ、、、
0065デフォルトの名無しさん
2008/09/30(火) 14:09:56ここに書いてある
perltidy
ってのをいれようと思ったんだが、
ActiveperlのPPMには入っていないようだ。
しかし、Acme::tidyというのが代わりに検索で
出てくるんだが、これでも同じなのか?
0066デフォルトの名無しさん
2008/09/30(火) 14:14:28いったいこれはなんだー
0067デフォルトの名無しさん
2008/09/30(火) 14:29:04自己解決した。
検索のときにハイフンを入れてなかった。
ハイフンいれたら検索で出てきた。
0068デフォルトの名無しさん
2008/09/30(火) 15:19:21使い方がいまいちよくわかんね。
0069デフォルトの名無しさん
2008/09/30(火) 19:15:02でperlなのだが、
prin
って打ったときに、
printf
って候補を出してくれる、っていうのはできないの?
0070デフォルトの名無しさん
2008/09/30(火) 19:34:32オススメのモジュールなどありますでしょうか?
できればインストールが簡単(*.pmコピるだけとか)で扱いやすいので。
0071デフォルトの名無しさん
2008/09/30(火) 22:31:04localtime((stat 'hoge.png')[9]) としても、どうも変な変換になっているようなのです。
0072デフォルトの名無しさん
2008/10/01(水) 21:08:27Text::MeCabの最新版
http://search.cpan.org/~dmaki/Text-MeCab-0.20007/
がどーしてもMacOS Xにインストールできません。
Makefileの-arch ppcを削ったらmakeできましたが、
それをmake installしてもまともな結果になりません。
どなたか御存知ですか?
0073デフォルトの名無しさん
2008/10/01(水) 21:15:48scalar localtime((stat 'hoge.png')[9]) にすると希望どおりだとかいうオチでは。
>>72
前にCPAN on OS X で困ってる人が来ていろいろやりとりしてたら
「MacPortsで解決しました!」という出来事があったのでこわいのです。
0074デフォルトの名無しさん
2008/10/01(水) 22:02:08> scalar localtime((stat 'hoge.png')[9]) にすると希望どおりだとかいうオチでは。
マニュアルを見ると希望通りに出来ると云うオチでしょう。
0075デフォルトの名無しさん
2008/10/01(水) 23:14:32以下みたいなone-linerで書きたいのですが
perl -pi.bak -e 's/#!.*/#!c:\\perl\\bin\\perl/ if($. == 1)' *.pl
$. の行数が、2つめのソース以降も値を引き継いでしまいます
なにかうまい方法はないでしょうか
0076デフォルトの名無しさん
2008/10/02(木) 01:03:19組み込み関数の eof を調べてみたらいいと思うよ。
0077デフォルトの名無しさん
2008/10/02(木) 01:19:21ありがとうございます
eofは使ったことがありませんでした
試してみます
0078デフォルトの名無しさん
2008/10/02(木) 07:41:10perl -i.bak -0777pe 's/\A#!.*?\n/hoge\n/ ' *pl
0079デフォルトの名無しさん
2008/10/03(金) 18:05:27コードがISO、西ヨーロッパなどとなってしまうのです。
そこで、headerの部分にcharset=を含めようとしてるのですが、
何度やっても、500エラーになってしまいます。
sub header {
print "Content-type: text/html\n\n";
print "<!--//HEAD//-->\n";
print "<html><head>\n";
print "<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">\n"
print "<title>CGI Control Panel</title>\n";
print "<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">\n"
↑
を追加して日本語になるように、お願い致します。
0080デフォルトの名無しさん
2008/10/03(金) 18:26:15WebProg板へ行った方が的確な回答が得られるんじゃないかな。
で、" " の中で、更に " " を使うな。
人間ならともかく、コンピュータはどこまでが " " の範囲なのか理解できない。
0081デフォルトの名無しさん
2008/10/03(金) 18:27:330082デフォルトの名無しさん
2008/10/03(金) 22:09:29ppm install failed: Can't find any package that provides DBD::mysql
というエラーメッセージが出ます
DBD::mysqlはリポジトリから無くなってるのでしょうか?
0083デフォルトの名無しさん
2008/10/03(金) 22:32:19新バージョンに対応してるDBD::mysqlがないということでしょうか
0084デフォルトの名無しさん
2008/10/03(金) 23:29:38無理して 5.10.0 使わんでもいいんじゃない?
0085デフォルトの名無しさん
2008/10/03(金) 23:47:26cpan使えば?
0086デフォルトの名無しさん
2008/10/04(土) 12:29:01これはどういうことだ
0087デフォルトの名無しさん
2008/10/04(土) 12:50:24人間の比率が高いから、採用の目安としては使えない、ってことじゃないかな。
昔のコボラみたいに融通が利かない人間を採ってもあとあと困るし。
0088デフォルトの名無しさん
2008/10/04(土) 17:40:03これの正しい発音は、
メール コロンコロン センドメール
で合ってる?
0089デフォルトの名無しさん
2008/10/04(土) 18:39:130090デフォルトの名無しさん
2008/10/04(土) 19:00:160091デフォルトの名無しさん
2008/10/04(土) 19:27:09log.txt
ここで質問。ファイル名が連番になっていても 順に読めるのでしょうか?
log001.txt
log002.txt
open(IN, "log.txt");
print while (<IN>);
close(IN);
log003.txt
0092デフォルトの名無しさん
2008/10/04(土) 19:34:120093デフォルトの名無しさん
2008/10/04(土) 20:34:360094デフォルトの名無しさん
2008/10/04(土) 20:47:450095デフォルトの名無しさん
2008/10/04(土) 22:27:56open(IN, "log001.txt");
print while (<IN>);
close(IN);
open(IN, "log002.txt");
print while (<IN>);
close(IN);
open(IN, "log.003txt");
print while (<IN>);
close(IN);
って書くと面倒でしょう?
ファイル名が連番になってて 順に読めないのかどうか?が知りたいのですよ。
0096デフォルトの名無しさん
2008/10/04(土) 22:30:44200個分のファイルを読むように ソースコードを書くのが 手間がかかりすぎるやん?
2000行ぐらい書くことになるかもしれない。
だから、 ファイル名を連番にして、
200行ぐらいの短くて分かりやすいコードは書けないのでしょうか?
0097デフォルトの名無しさん
2008/10/04(土) 22:33:04my $a;
$a="log001";
print "$a".".txt\n";
$a++;
print "$a".".txt\n";
これちょっと実行して結果見てみ。
0098デフォルトの名無しさん
2008/10/04(土) 22:36:07なかった
0099デフォルトの名無しさん
2008/10/04(土) 22:37:58それ!それです。
マジ助かる。ありがとうございました!!
0100デフォルトの名無しさん
2008/10/04(土) 22:37:58何がないんだよ
0101デフォルトの名無しさん
2008/10/04(土) 22:41:070102デフォルトの名無しさん
2008/10/04(土) 23:02:00例によって $a は(ry ついでに "$var" って(ry
0103デフォルトの名無しさん
2008/10/04(土) 23:03:500104102
2008/10/04(土) 23:05:460105デフォルトの名無しさん
2008/10/05(日) 04:55:51改行の仕方がおかしいせいで別の意味に取れる
0106デフォルトの名無しさん
2008/10/05(日) 05:25:14つかこの程度の発想が出来ないとプログラムセンス的になぁ・・・
0107デフォルトの名無しさん
2008/10/05(日) 13:03:55そこそこスジの良い人なら、仮にPerlが初めて触った言語でも
勉強3日目には卒業してるレベル。
0108デフォルトの名無しさん
2008/10/05(日) 17:14:19>>95みたいなプログラムを本当に書いてた
0109デフォルトの名無しさん
2008/10/06(月) 10:24:450110デフォルトの名無しさん
2008/10/06(月) 23:15:39いいような気がするのですが、何か意味があるのでしょうか?
if ( /%[^%]*?%/g ) { ・・・ }
0111デフォルトの名無しさん
2008/10/06(月) 23:57:190112デフォルトの名無しさん
2008/10/07(火) 01:44:450113デフォルトの名無しさん
2008/10/07(火) 11:38:43たぶん、ついうっかりやってしまただけだろ。特に意味など無いと思うよ。
0114デフォルトの名無しさん
2008/10/07(火) 11:57:42data1.txtは、Shift-JISで改行は\x0D\x0Aです。
以下のコードを実行すると、data2.txtの改行が、\x0D\x0D\x0Aとなりますが、何故そうなるのでしょうか?
open IN, "<:raw", "data1.txt";
open OUT, ">:crlf", "data2.txt";
print OUT <IN>;
close IN;
close OUT;
0115デフォルトの名無しさん
2008/10/07(火) 12:46:410116デフォルトの名無しさん
2008/10/07(火) 12:48:52:crlf は、0x0A を出力する時に 0x0A → 0x0D, 0x0A という置換をする。
(入力時は、0x0D, 0x0A を 0x0A に置換する)
:raw は、何の変換もしない。
おそらく data1 が 0x0D, 0x0A なテキストで、これがそのまま無変換で読み込まれ、
出力する時に <0x0D> <0x0A> → <0x0D> <0x0D, 0x0A> と変換されている。
0117デフォルトの名無しさん
2008/10/07(火) 12:58:49なるほど、そういうカラクリですか
サンクス
0118デフォルトの名無しさん
2008/10/07(火) 14:18:44正規表現的にうっかりだろうけど、マッチがグローバルになる事を利用している場合もある。
マッチが保存された開始位置から始まり、(次のマッチの為に)開始位置を保存するようになる。
例.
perl -le '$_=q/012312345/; m/1/g; m/1/g; print join q/:/,$`,$&;'
0123:1
pos($_)= X; m/RE/g のように、マッチ開始位置を指定する手もある。
0119デフォルトの名無しさん
2008/10/07(火) 18:04:49>>118
サンクス
可能性としては、単なるうっかりか、次のマッチのために使っていたということっすね
0120デフォルトの名無しさん
2008/10/07(火) 18:17:130121デフォルトの名無しさん
2008/10/07(火) 18:25:490122デフォルトの名無しさん
2008/10/07(火) 18:38:21↑こんなURL投稿でサイト名を取得して(タイトル内の<title>Yahoo! JAPAN</title>)を表示させるにはどうしたら良いですか?
Yahoo! JAPAN
0123122
2008/10/07(火) 18:39:410124デフォルトの名無しさん
2008/10/07(火) 18:46:44ちがうだろ
0125デフォルトの名無しさん
2008/10/07(火) 18:52:55支離滅裂
0126デフォルトの名無しさん
2008/10/07(火) 18:55:37これを改造で良いのかな?
0127デフォルトの名無しさん
2008/10/07(火) 19:33:55.co.jpがどうしても抽出できません。
誰か間違いを教えてくださると嬉しいです。
よろしくお願いします。
my $suuji;
$host = fff.co.jp;
if($host =~ /\.co\.jp$/){
$suuji = 10;
}else{
$suuji = 3333;
}
print $suuji;
0128デフォルトの名無しさん
2008/10/07(火) 19:42:29print $host, "\n";
裸のワードはなんたらなので文字列ならなんとかかんとか
0129デフォルトの名無しさん
2008/10/07(火) 20:39:270130デフォルトの名無しさん
2008/10/07(火) 20:55:240131デフォルトの名無しさん
2008/10/07(火) 21:02:20サンクス
一つ賢くなりました
0132デフォルトの名無しさん
2008/10/07(火) 21:29:48scraper
0133デフォルトの名無しさん
2008/10/08(水) 12:43:37便利でよくできてるものはどんどん登録された方がいいと思うけど、
これはえがいひとみたいのが、カスみたいのを登録しまくったら滅茶苦茶になるよね?
0134デフォルトの名無しさん
2008/10/08(水) 20:23:03単に出来が悪くて抹消というのは聞いたことがない。
Perl の人達は一般に、コードの主観的有用性に基いた恣意的な判断を嫌う。
規制の例としては、名前空間に関する暗黙のコンベンションを読み取れない子が時折出現してはかわいそうなことになっているくらいか。
0135デフォルトの名無しさん
2008/10/08(水) 21:34:31CPANテロ。
0136デフォルトの名無しさん
2008/10/09(木) 23:50:53構成されているかどうか調べる正規表現が分かりません。
先輩方。よろしくお願い致します。
0137デフォルトの名無しさん
2008/10/10(金) 00:13:44最近までCGIのソースを見て作ってきたのですが飽きてきたので他のものに
触れたいと思っているのですが皆さんはperlでどのようなことをしていますか?
自分はソフトウェアかネットワークプログラミングをやろうと思っているのですが
(というかそのぐらいしか知らないです。)皆さんの意見を参考にもし面白そうなの
があればやってみようと思ってます。
ただCGや音楽、ゲームはなしの方向でお願いします。
0138デフォルトの名無しさん
2008/10/10(金) 00:22:170139デフォルトの名無しさん
2008/10/10(金) 01:36:24最近までCGIのソースを見たり、書いたりしてきたのですが飽きてきてしまったので
他のものにも触れてみようかなと思っているのですが皆さんはperlでどのようなことをしていますか?
自分はソフトウェアかネットワークプログラミングをやりたいと思っているのですが
皆さんの話を参考にもし面白そうなのがあればそれらも検討しようと思っております。
ただCGや音楽、ゲームはなしの方向でお願いします。
こんな感じでよろしいですか?
0140デフォルトの名無しさん
2008/10/10(金) 06:06:590141デフォルトの名無しさん
2008/10/10(金) 09:13:09そんなに日本語変ですか。
0142デフォルトの名無しさん
2008/10/10(金) 09:30:140143デフォルトの名無しさん
2008/10/10(金) 10:00:420144デフォルトの名無しさん
2008/10/10(金) 10:08:06ソフトウェアはソフトウェアプログラミングのことを言ってます。
>>143
そこは変換ミスなのでスルーしてください。
本当はその漢字が正しいと勘違いしていただけですが。
0145デフォルトの名無しさん
2008/10/10(金) 10:23:20> ソフトウェアはソフトウェアプログラミングのことを言ってます。
じゃあ、「ソフトウェアプログラミング」の中の「ソフトウェア」の意味は?
0146デフォルトの名無しさん
2008/10/10(金) 10:47:54アプリケーションソフトなどのことじゃないのですか?
0147デフォルトの名無しさん
2008/10/10(金) 11:00:01って話になるだろ・・・
0148デフォルトの名無しさん
2008/10/10(金) 11:09:22そんなことを聞いてどうするつもりですか?
なぜあなたがそんなことを細かく聞いてくるのか自分には理解が出来ない
のですが?
ソフトウェアプログラミングのソフトウェアがアプリケーションソフト以外の
ものをさすならわかりますがそれで間違いないならこれ以上追及する意味が
ないと思うのですが?
0149デフォルトの名無しさん
2008/10/10(金) 11:16:22アプリケーションソフトをやりたい
ってどういうことやねんってことでしょ
0150デフォルトの名無しさん
2008/10/10(金) 11:29:510151デフォルトの名無しさん
2008/10/10(金) 11:33:45「デスクトップアプリケーションを作りたい」
では・・・
0152デフォルトの名無しさん
2008/10/10(金) 11:38:46君がやりたい内容が理解できないから
掘り下げて聞いているのですよ。
ソフトウェアでもアプリケーションソフトでも、意味が広すぎる
0153デフォルトの名無しさん
2008/10/10(金) 11:47:51皆さんがperlでどんなことをやってるかなのですが・・・?
0154デフォルトの名無しさん
2008/10/10(金) 11:58:130155デフォルトの名無しさん
2008/10/10(金) 12:01:470156デフォルトの名無しさん
2008/10/10(金) 12:08:17「どんなこと」も広すぎるから、方向性を絞り込む為に「やりたいこと」を参考にしたいのだが
そのやりたいこともよくわからないので掘り下げてみた
エロ動画サンプルを自動巡回DLオススメ
0157デフォルトの名無しさん
2008/10/10(金) 12:19:58md5ハッシュとファイルサイズを持っておいて、この2つでチェックすれば
まぁほぼ確実な精度で重複する画像が見つけられるだろう。
0158デフォルトの名無しさん
2008/10/10(金) 12:27:14・エロ動画巡回収集、解凍、整理
自分の場合はこんな感じ。いつも思うことだけどPerlの用途は幅広いね。
0159デフォルトの名無しさん
2008/10/10(金) 13:20:150160デフォルトの名無しさん
2008/10/10(金) 13:38:480161デフォルトの名無しさん
2008/10/10(金) 14:00:040162デフォルトの名無しさん
2008/10/10(金) 14:02:180163デフォルトの名無しさん
2008/10/10(金) 14:03:220164デフォルトの名無しさん
2008/10/10(金) 14:43:01教えてください。
ifconfig/ipconfigで調べることはできるんですが、
ひょっとするとモジュールがあるかも、と思いました。
ググったら、Net::Netmaskモジュールを見つけたんですが、
これは違いました。
わかるような情報を
0165デフォルトの名無しさん
2008/10/10(金) 14:48:32おっと、「自宅でgoogle」を作った。な。
ウェブブラウザのアクセス追跡やその他SBMや優秀なリンクリスト系ブログから
URLをかき集めてクロリングクロリング。ず〜っと16KB/secのバンド幅でかき集め
続けている。
0166デフォルトの名無しさん
2008/10/10(金) 14:52:39つNet::Interface
0167デフォルトの名無しさん
2008/10/10(金) 14:53:24ええと…… 言周 言周 言周 ……Net::Interfaceはちがう?
0168デフォルトの名無しさん
2008/10/10(金) 16:38:130169デフォルトの名無しさん
2008/10/10(金) 16:47:44>>136
^(?:\x82[\x9F-\xF1]|\x81[\x4A\x4B\x54\x55]|\x20|\x81\x40)+$
これでどうだろうか?
でも、スペースがあると何かと厄介だよな。
フォームとかで使う事を考えると、スペース削除して目的達成できるなら
事前に半角全角スペース全削除して平仮名だけチェックするのがイイと思う。
0170デフォルトの名無しさん
2008/10/10(金) 16:57:45> オマエらこういう質問に無視しないでマジメに答えてやれよ。
自分は人々より高い位置にいるという自己認識を露わにしながら
出現する人ってなんなの?
0171デフォルトの名無しさん
2008/10/10(金) 17:19:30別に自分を「人々より高い位置にいる」とは認識してないのでは。
誰も答え「られない」が、俺だけは答え「られる」って構図を出してきたんなら、
まぁ、確かにそういう気位を感じなくもないが。
0172デフォルトの名無しさん
2008/10/10(金) 17:25:33質問返ししなきゃならんし、面倒臭いしスルーしてた。
文字コードSJIS決めつけで答えてるし、どっかのページのコピペでしょ。
もしかしたら、質問者本人の煽りレスかもね。
0173デフォルトの名無しさん
2008/10/10(金) 17:26:17司令官が出現しました!!
0174デフォルトの名無しさん
2008/10/10(金) 17:51:42/^[ \p{Hiragana}]+$/
でいいんじゃね?
'['のあとの2文字は半角スペースと全角スペース。
0175デフォルトの名無しさん
2008/10/10(金) 20:27:160176デフォルトの名無しさん
2008/10/10(金) 20:55:28>>175
買って損はない
0177デフォルトの名無しさん
2008/10/10(金) 20:58:11サンクス
買ってみます
0178デフォルトの名無しさん
2008/10/10(金) 21:16:28バージョン5.6がベースだからunicodeとスレッド関係は要注意。
この2つは5.8以降で互換性が無くなってるからあくまで参考に留めるべし。
5.8以降のunicodeの扱いはwebで検索した方が良い。
0179デフォルトの名無しさん
2008/10/10(金) 21:27:50了解しました
0180デフォルトの名無しさん
2008/10/10(金) 21:50:48自分は2002年にラクダ和訳が出てすぐ「欲しかったから」買ったんだけど
純粋に実用面だけを考えたら、他人に「買って損はない」とまでは言えないな。
0181デフォルトの名無しさん
2008/10/11(土) 00:07:450182デフォルトの名無しさん
2008/10/11(土) 01:53:160183デフォルトの名無しさん
2008/10/11(土) 02:01:320184デフォルトの名無しさん
2008/10/11(土) 09:06:110185デフォルトの名無しさん
2008/10/11(土) 09:17:50訳出作業に使用した作業環境
IBM ThinkPad 535(Pen120MHz 40MB HDD2GB)
FreeBSD2.2.1+PAO Mule2.3
0186デフォルトの名無しさん
2008/10/11(土) 09:23:21だから、説明に欠落がある。
0187デフォルトの名無しさん
2008/10/11(土) 15:46:11ソフトウェアってのはハードウエアではないあらゆるものを指すわけで、あなたが飽きてきたっていう
「CGIプログラム」だってソフトウエアです。家電のプリント基板に入っている組み込み系もソフト
ウエアですし。だからみんな「ソフトウエアがやりたい」って、何がやりたいの? と訊いてる訳です。
…てなことは説明しなくてもわかって欲しいのですが。
Windows上で動くGUIなプログラムのことなんですかね…。perlでも書けなくもないですね。
でも結局WinAPIをいじるから、そっちの知識がないと書けないですし。VBやVCという言語がある
ってことくらいは知っててもいいと思います。なでしこってのもあるよ。
そもそも、プログラムの形態とか言語についてあれこれいう前に、作ったプログラムで何がやりたいか、
を具体的にイメージできないと、モチベーションを維持するのは難しいと思います。私の経験上
そうです。何か作りたいものがあって取り組むのが一番上達が早いです。
私はCGI屋なんで、その立場から言わせてもらうと、CGIだっていつまでも奥が深くて、飽きるなんて
ことはないですよ。できることはたくさんあるし、やりたいことも尽きません。
0188デフォルトの名無しさん
2008/10/11(土) 16:29:550189デフォルトの名無しさん
2008/10/11(土) 17:31:110190デフォルトの名無しさん
2008/10/11(土) 17:48:100191デフォルトの名無しさん
2008/10/12(日) 22:15:11ということはプログラムのほとんど、またはすべてはソフトウェア
プログラミングということでしょうか?もしそうなら皆さんごめんなさい。
確かにそれなら自分の質問に答える前につっこまれるのが普通だと思います。
それとCGIですごい大きいものを作ったわけでもないのに飽きたと言ったのは偉そうに
言い過ぎました。すみません。
自分が言っているソフトウェアプログラミングはメモ帳やエクセルなどの
デスクトップアプリケーションのことです。
自分がまだプログラムを始めたての頃、作りたかったのがCGIというかチャットや掲示板だったんです。
プログラムを始めた時は頭が今よりも悪く(今もよくないですが)学校が忙しいのもありましたが
意味不明なことをしていて結局CGIに取り掛かるのに1年かかってしまいました。
ただ作ってみたら結構簡単だし同じような処理が多いので楽しいよりめんどくさい
の気持ちが強くなってしまい他の作ってみたいなという気持ちが出てきたので
前の質問に至りました。
ただ自分はパソコン歴自体長くなく知らないことも多いので
もしかしたらすごい楽しいCGIのプログラミングがあるのかもしれませんね。
検索サイトやデータベースはあまり興味ないですが。
長々とすみません。
0192デフォルトの名無しさん
2008/10/12(日) 22:25:09まで読んだ。
0193デフォルトの名無しさん
2008/10/13(月) 06:14:15まず周囲の空気を読む事から覚えろw
0194デフォルトの名無しさん
2008/10/13(月) 08:27:19用語や用法のミスはあまり問題ではない。
まずは相手に伝える努力をしろよ。
0195デフォルトの名無しさん
2008/10/13(月) 09:33:28> 用語や用法のミスはあまり問題ではない。
用語や用法の決めつけをあらゆるレベルでやっているのを見て、
みんな真面目に対応するのをやめたのだと思う。
0196デフォルトの名無しさん
2008/10/13(月) 10:59:330197デフォルトの名無しさん
2008/10/13(月) 12:32:51結局それに尽きる
0199デフォルトの名無しさん
2008/10/13(月) 18:03:06いわゆるラクダ本はPerlを基軸言語にしたいというやつ以外、不要。
内容的に古いし、プログラミングの基本が学べるわけでもない。
そんなもんに金と時間使うなら、自分本来の得意分野を伸ばすことに時間を使え。
どうしてもってなら下巻だけ買っとけ。
0200デフォルトの名無しさん
2008/10/13(月) 20:41:170201デフォルトの名無しさん
2008/10/13(月) 21:33:58アルパカな
>単純に読み物として楽しめた。
たしかにそうだが正直なところ
ああいう欧米系ジョークを交える書き方は
日本人には難しそうだ
0202デフォルトの名無しさん
2008/10/13(月) 22:20:19確かに。
-------------------------
C++をを設計したストラウストラップの教本
↓
smalltalkの「メッセージ」を真似して「std::cout << "Hello, world!" 」なんて書けるようにしました。てへ。
↓
<< がCのビット演算子とかぶってるって?
しかも厳密な意味では演算子オーバロードですら無いって?
知ったこっちゃないね。重要なのは「メッセージ」だって言ってるだろ!
↓
最初の10数ページ以降「メッセージ」の概念が無くなってるって?
あーいいのいいの。これオブジェクト指向とやらを無理矢理実装した俺様仕様だからさ。気にすんなって。
-------------------------
おいらがC++を見限ったのは、このお笑いのツボが理解できなかったからだとさ。
0203デフォルトの名無しさん
2008/10/13(月) 22:24:330204デフォルトの名無しさん
2008/10/14(火) 04:10:35perlのソースコードを一行一行、一行づつ全部
データーベースに格納したら面白いかな?
と考えたんだが、どうだろうか?
0205デフォルトの名無しさん
2008/10/14(火) 05:27:51ストラウストラップ教本 の方がまだ面白い
0206デフォルトの名無しさん
2008/10/14(火) 06:11:350207デフォルトの名無しさん
2008/10/14(火) 09:55:11インクリメンタルに検索できるやつにしてね。
0208164
2008/10/14(火) 13:48:50レス、ありがとうございます。
モジュール名を聞くとド真ん中な感じですが、
自分では見つけられませんでした。。。
Net::InterfaceモジュールをCPANからダウンロード
して試してみました。
常用しているActivePerl5.8@Winにインストール
しようとしたところ、残念ながらうまくいきませんでした。
ちょっとソース(siteconf)を覗いたんですが、どうやら
UNIX系専用のようですね。超残念。
別環境として、Perl5.6@UNIX系もありましたので、
そこでインストールしてみると、ちゃんとインストール
できました。
スクリプトを書いて動作確認したところ、たしかに
期待どおりの情報(IP、Subnet Mask、MACアドレス)を
取得することができました。
本稼働はUNIX系で行うつもりだったので、これで
充分ではあるのですが、できればWindows環境でも
実行したいです。
Windows環境で同様の情報を取得する方法は
ないでしょうか?
0209デフォルトの名無しさん
2008/10/14(火) 14:01:48はどうかな。説明文を読む限りでは使えそうだが試したことはない。
0210デフォルトの名無しさん
2008/10/14(火) 22:25:58use XML::Tidy;
my $tidy = XML::Tidy->new($_);
とやっております。
このとき、不完全なXMLのときは、mismatchエラーが発生しますが、
これを無視して、可能な限りXMLを解釈して読み込むことはできないのでしょうか?
バージョンは
perl : v5.8.8
XML::Parser : 2.34
XML::Tidy : 1.2.54HJnFa
です。
0211デフォルトの名無しさん
2008/10/14(火) 22:41:55XML::Liberal+XML::LibXMLなんて組み合わせは?
0212デフォルトの名無しさん
2008/10/14(火) 23:18:27ありがとうございます。
試してみます。
0213デフォルトの名無しさん
2008/10/15(水) 12:54:22&jcode'convert(*title,'jis');
というコードがあったんですが、これってどういう意味ですか。
&jcodeのあとの「'」がわかりません。
0214デフォルトの名無しさん
2008/10/15(水) 12:59:01http://www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html
> 古いパッケージ区切り子はシングルクォートでしたが、
> 現在はダブルコロンを使うのが推奨されています。
> 古い構文も互換性のためにまだサポートされているので、
> "This is $owner's house"のようにすることもできます。
> これは$owner::sをアクセスします。
0215デフォルトの名無しさん
2008/10/15(水) 15:14:35それがDOMを構築しようとするものなら、
エラーが出るのはどうしようもないのでは。
かわりにSAX系のパーサーを使えば?
XML::Parserとか。
それなりにめんどくなりそうだけど。
0216デフォルトの名無しさん
2008/10/15(水) 16:47:01この人小学生からperlやってるってよ
0217デフォルトの名無しさん
2008/10/15(水) 18:05:05さんくす
Perlの古い書き方だったんですね
0218デフォルトの名無しさん
2008/10/15(水) 20:12:370219デフォルトの名無しさん
2008/10/15(水) 21:21:12>>217で書いてるのはPerlの書き方が古いか新しいかですけどね。
0220デフォルトの名無しさん
2008/10/16(木) 00:57:280221デフォルトの名無しさん
2008/10/17(金) 01:04:15カンタンに説明してくれないか?
0222デフォルトの名無しさん
2008/10/17(金) 03:29:240223デフォルトの名無しさん
2008/10/17(金) 03:41:290224デフォルトの名無しさん
2008/10/17(金) 12:54:52エロ画像フォルダで実感しろ。…普通に object 指向で書く方が楽だ罠。
use File::Find ;
use Data::Dumper ;
use Cwd ;
my $outer = sub{ return 1 if !( -d and /.[.][^.]*?$/) ; $File::Find::prune = 1 ; return ; } ;
my %hash ; my %hash2 ;
my $inner = sub{ return if ! m{\.(?:jpg|bmp|png|gif)$} ; $hash{$File::Find::name} = -s $_ ; } ;
my $inner2 = sub{ push @{$hash2{ uc unpack q{A7}, $_ }}, $File::Find::name ; } ;
my $code = sub {
my $outer = shift ;
sub { # コレが closure
my $inner = shift ;
sub { return if ! $outer->() ; $inner->() ; }
}
};
my $base = $code->( $outer ) ;
find $base->($inner), getcwd ;
find $base->($inner2), getcwd ;
print Dumper \%hash, \%hash2 ;
0225デフォルトの名無しさん
2008/10/17(金) 12:55:36違うとマジレス。
ちゃんとした説明はなかなか大変だよなー。
0226デフォルトの名無しさん
2008/10/17(金) 14:09:39http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq7.html#what_s_a_closure
0227デフォルトの名無しさん
2008/10/17(金) 19:05:02調べるにはどうしたらいいですか?
0228デフォルトの名無しさん
2008/10/17(金) 19:11:140229デフォルトの名無しさん
2008/10/17(金) 19:13:16ref
0230デフォルトの名無しさん
2008/10/17(金) 19:22:50サンクス
0231デフォルトの名無しさん
2008/10/17(金) 21:30:11MechanizeでBASIC認証がなぜか出来なくなった…
UserAgentオーバーライドしてもcredentialsでもだめ
http://id:[email protected]/とかやると繋がるけど…
何が悪いんだろう…
同じような人が居たらヒントでもいいんで教えてもらえると有難いです。。
0232デフォルトの名無しさん
2008/10/17(金) 21:36:23デバッグフラグ立てて動作トレース
0233デフォルトの名無しさん
2008/10/17(金) 21:48:51ありがとうございます。
やってみます。m(_ _)m
0234231
2008/10/18(土) 00:02:44LWP/Authen/Basic.pmのauth_headerにある「$user, $pass」に
試しに値を入れてみたら問題なく繋がった
LWPでauthorization_basicを試してみたら此方も問題なく成功
Mechanizeでもauthorization_basicを呼び出すようにしたら此方も成功
吊ってきます…
0235デフォルトの名無しさん
2008/10/18(土) 11:04:50Spreadsheet::ParseExcel みたいなのがないかと CPAN を探したのですが、見当たりません。
0236デフォルトの名無しさん
2008/10/18(土) 11:39:28ttp://www.atmarkit.co.jp/flinux/rensai/linuxtips/943wvware.html
Antiword is a free MS Word reader
http://www.winfield.demon.nl/
OpenOffice.org
http://ja.openoffice.org/
0237デフォルトの名無しさん
2008/10/19(日) 06:50:02有難うございます。やはり、perl から呼べるものはないようですね。
文書全体の読み出しだけでなく、「XXページにXXX があったら、XX+n ページに対応するXXXXがあるかチェックする」といった処理もできれば、
と思っていたのですが。それにしても Spreadsheet::ParseExcel は偉大だ…
0238デフォルトの名無しさん
2008/10/19(日) 07:26:47何か良い方法ありますか?
0239デフォルトの名無しさん
2008/10/19(日) 12:05:470240デフォルトの名無しさん
2008/10/19(日) 12:11:040241デフォルトの名無しさん
2008/10/19(日) 12:27:00そういう意味じゃないんです…
>>240
foreach %hoge (@fuga)としたら、syntax error at Z:\script\test.pl line 9, near "foreach %hogeって言われました
0242デフォルトの名無しさん
2008/10/19(日) 12:36:10$hash_ref->{bar}
}
0243デフォルトの名無しさん
2008/10/19(日) 12:40:57試してみたら通りました。回答ありがとうございました
0244デフォルトの名無しさん
2008/10/19(日) 12:43:16「ハッシュのリファレンスが詰まった配列」だから。
foreachで一つ一つ取り出す時も、当然それをリファレンスとして扱わなきゃダメ。
0245デフォルトの名無しさん
2008/10/19(日) 12:50:50適当に入門サイト眺めただけだとやっぱり駄目ですね、今度らくだ本買ってじっくり読むことにします
0246質問
2008/10/19(日) 16:56:31・取得したい文字列の例は、ABC+数字で構成される たとえばABC11やABC2543など
・ファイルによっては行数が異なる。
・各行に取得したい文字列は0個以上ある。
・各行で、取得したい文字列が位置する場所はさまざま。(先頭にあったり、途中にあったり、)
0247デフォルトの名無しさん
2008/10/19(日) 17:00:19本も良いがまずは perldoc に当たる習慣を付けた方がいい。
メジャーなドキュメントなら和訳も web を探せばある。
ttp://perldoc.jp/docs/
ttp://fleur.hio.jp/perldoc/
ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
0248デフォルトの名無しさん
2008/10/19(日) 17:10:30ふつうに1行ずつ読んでパターンマッチして切り出していけばいいだけ。
0249質問
2008/10/19(日) 17:20:17各行に0〜数個(決まりはないけど最大10程度)あるので・・
if($_=~/ABC(\d+))/)
なら1つは取得できても、その他の文字列をどうやって取得すればいいのか・・
ファイルの例)
マツダ スバル
ABC111 ABC23 トヨタ
日産 本田 ABC2222
↑ここからABCxxxの文字列だけ抽出したい
0250デフォルトの名無しさん
2008/10/19(日) 17:26:11マニュアル見れ
0251デフォルトの名無しさん
2008/10/19(日) 17:27:06必要な数だけパターンマッチして切り出していけばいいだけ。
0252デフォルトの名無しさん
2008/10/19(日) 18:32:45>>241
>foreach %hoge (@fuga)
こんな無茶な構文あり得ないだろ
>>249
パターンマッチのオプションを調べれ
0253デフォルトの名無しさん
2008/10/19(日) 20:46:49# 一行ヒント野郎
perl -nle "$, = ' '; print $., /ABC\d+/g" < ファイル名
0254デフォルトの名無しさん
2008/10/21(火) 23:09:08Perlでブログ(RSSつき)みたいな機能って作れますか?
あと家計簿なんかも作れますか?
今勉強中なんですが、目標が無いと挫折しそうなんです(^^;)
0255デフォルトの名無しさん
2008/10/21(火) 23:10:53おまえならやれる。
0256デフォルトの名無しさん
2008/10/21(火) 23:29:51Perl/Tk使うのかな。
0257デフォルトの名無しさん
2008/10/21(火) 23:56:14っ[Web]
0258デフォルトの名無しさん
2008/10/22(水) 00:32:22$image_dataに画像データが入っていて、それを読み込み/編集/書き込みたい場合はどうやったらいいのでしょうか?
$image->Read($image_data);
$image->Flip;
$image->Write($image_data);
のようなことです。
0259258
2008/10/22(水) 00:53:16my $image = Image::Magick->new(magick=>'gif');
$image->BlobToImage($image_data);
$image->Flip();
$image_data = $image->ImageToBlob();
0260デフォルトの名無しさん
2008/10/22(水) 13:06:560261デフォルトの名無しさん
2008/10/23(木) 00:28:09> Perl単体じゃあ家計簿は無理じゃない?
確かにそうだな。まともなシェルが必要だ。
0262デフォルトの名無しさん
2008/10/23(木) 01:44:57俺も最初そう思ったんだが、Excelは結局馬鹿だし、Excel用アドイン作ってる連中も馬鹿だから以下のようにした。
・入力はExcel
・Perl+Spreadsheet::ParseExceでウハウハ
・Perlで計算
・Perl+LaTeX系モジュールで帳票自動生成&改ページ自動編集&印刷
これで8年くらい確定申告の提出書類を作成してる。
いまだに国税庁のマルサは来ない。
まー奴らは俺みたいな貧乏人はスルーしてるだけだがw
0263デフォルトの名無しさん
2008/10/23(木) 20:36:56pythonにも負けてる(藁
0264デフォルトの名無しさん
2008/10/24(金) 14:43:040265デフォルトの名無しさん
2008/10/24(金) 14:50:59できる
0266デフォルトの名無しさん
2008/10/24(金) 14:58:18つ-Pオプション
でもいろいろ問題あるから使わないほうがいいよ。
最終的に何をしたいのかわからないが、たいてい
使わないでできるもっといい方法がある。
0267デフォルトの名無しさん
2008/10/24(金) 23:33:040268デフォルトの名無しさん
2008/10/24(金) 23:35:360269デフォルトの名無しさん
2008/10/24(金) 23:38:16もちろんできる。できない理由はない。
0270デフォルトの名無しさん
2008/10/24(金) 23:45:050271デフォルトの名無しさん
2008/10/25(土) 01:24:17そういうときは、報酬も書いておくと話が早く進むぞ。
0272デフォルトの名無しさん
2008/10/25(土) 01:59:010273デフォルトの名無しさん
2008/10/25(土) 07:03:270274デフォルトの名無しさん
2008/10/25(土) 14:56:52どうすればいいでしょうか?
a->b,c a->b->d,e a->c->f,g
のような感じです
0275デフォルトの名無しさん
2008/10/25(土) 16:02:270276デフォルトの名無しさん
2008/10/25(土) 16:17:220277デフォルトの名無しさん
2008/10/25(土) 22:40:17をはりっぱにし、arielから吐かれるメッセージをローカル
のディスクにロギングしたいとです。。。
arielの仕様では、無通信時間5分でtimeoutになるので
5分毎に"\n"を送信しようと思います。
自分の頭では以下の様に、whileループでarielからのデータ
を待ち続けるロジックしか思いつかず、これでは5分毎の
"\n"送信をどうして行えばよいのか解りませんとです。
エロい方、なんとか教えてください。。。
open (OUTLOG,">>./ariel.log");
$socket = IO::Socket::INET->new(
PeerAddr => 'ariel',
PeerPort => '23',
Proto => 'tcp',
);
if ( ! $socket ){ die }
while(1){
$buf = <$socket>;
print OUTLOG $buf\n";
}
0278デフォルトの名無しさん
2008/10/25(土) 23:08:28とりあえずNet::Telnet使えば?
0280デフォルトの名無しさん
2008/10/25(土) 23:49:42>>278
Net::telnetは
@result = $telnet->cmd("ls -l");
の様な使用例しか無いので、>>277のケースではどうかなーって思って
>>279
別プロセスでなく、同一セッション中で"\n"送らないとダメな気がします
って、んん?別プロから何かシグナルをこのプロセスに対して5分間隔
送ればいいのかぁーー!? そんなのできるんかな、調べてみよう
0281デフォルトの名無しさん
2008/10/25(土) 23:56:55シグナルハンドリングを知っているなら、alarmで起こせばいいだろ。
0282デフォルトの名無しさん
2008/10/26(日) 00:29:26おおっ!何と言うことでしょう。
なんだか出来そうな予感がしてまいりました。
月曜に会社行くのが楽しみになってきたw
ヒントあんがちょ。多謝です。
こんなカンジかな?
略〜
$SIG{ALRM} = \&timeout; # timeout時の¥に実行する関数
alarm 280; # 5分=300秒より小さい値でアラーム
while(1){
$buf = <$socket>;
print OUTLOG $buf\n";
}
sub timeout {
print <$socket> "\n"; # 待望の"\n"送信!!
alarm 280; # アラーム再設定
}
0283デフォルトの名無しさん
2008/10/26(日) 15:29:24Mail::IMAPClientベースで書いていたのですが、
$from->migrate($to, "ALL", "OUTBOX") or die "Could not migrate: $@ \n";
この行で手元サーバからGMailへメールを移行しようとしても、移行できていないようです。
$from は 手元サーバ, $to はGMailです。GMailへの接続login自体はうまくいっているようです。
OUTBOXラベルはGMail側で作って、IMAPから見えるように設定済みです。
アドバイスいただけますでしょうか?
0284デフォルトの名無しさん
2008/10/26(日) 16:12:50自己解決。migrateを使うのを諦めて、appendとfetchで処理しました。
お騒がせスマソ。
0285デフォルトの名無しさん
2008/10/26(日) 17:43:20例えば、以下のように行った場合、
---------------------
my $str = 'a b c d';
$str =~ s/ //;
---------------------
a直後のスペースが消えますが、cの後ろのスペースを消すような正規表現は出来ないでしょうか?
abcdといった文字列は可変です。
事前に文字列を反転させるしか思い浮かばないのですが他に方法はあるのでしょうか?
宜しくお願いします。
0286デフォルトの名無しさん
2008/10/26(日) 17:45:230287デフォルトの名無しさん
2008/10/26(日) 20:37:58ありがとうございます!!
0288デフォルトの名無しさん
2008/10/27(月) 15:12:37直感的じゃなくて困っています。Pythonにしとけばよかた。
0289デフォルトの名無しさん
2008/10/27(月) 15:30:10うん、とっととPerlのことを忘れてPythonに移れ。
0290デフォルトの名無しさん
2008/10/27(月) 15:37:36$str=~/ ([^ ]*?)$/$1/;
どっちでもいいんだけど、>>286と比較したら
どっちの効率がいいんだろう?
0291デフォルトの名無しさん
2008/10/27(月) 16:00:31Aから来たときはロケーション無し、Bからなら有り のような感じにしたいのですが
0292デフォルトの名無しさん
2008/10/27(月) 16:06:300293デフォルトの名無しさん
2008/10/27(月) 16:28:05次のどっちかで区別できる。
環境変数HTTP_REFERER
INPUT(TYPE=HIDDEN)要素
でもこれ、Perlの質問じゃないのでスレ違い。
Web系のとこにいけ。
0294デフォルトの名無しさん
2008/10/27(月) 17:06:45ありがとう、試してみます
そして、移動してログよんできます
ごめん
0295デフォルトの名無しさん
2008/10/27(月) 22:05:58とか
0296デフォルトの名無しさん
2008/10/28(火) 09:09:50先読みアサーションか。そういえばあったなー。
新しいせいか慣れないせいか、オレはどうしても忘れがち。
0297デフォルトの名無しさん
2008/10/28(火) 16:53:15クラスA
クラスB
それぞれのオブジェクト指向モジュールがあったとします。
なかでの処理には変数が英数をチェックしたり文字数チェックしたりでエラーを
だすようにしるとします。
で、問題は英数や文字数をチェックするルーチンはどう実装するのが理想でしょうか?
簡単なルーチンだからそれぞれのクラスにサブルーチンとして最後の行にでも書いておけ!
っていうことでもいいでしょうか?
0298デフォルトの名無しさん
2008/10/28(火) 17:56:070299デフォルトの名無しさん
2008/10/28(火) 20:45:57http://fleur.hio.jp/perldoc/mix/pod/perlboot.ja.html
http://perldoc.jp/docs/perl/5.8.8/perlmod.pod
http://perldoc.jp/docs/perl/5.10.0/perltoot.pod
>>2
0300デフォルトの名無しさん
2008/10/28(火) 23:19:11下記のように前のページからPOSTデータを取得してTemplateに書き出したいのですが、うまく行きません。
どう修正すればよいでしょうか?
#! /usr/bin/perl
use strict;
use warnings;
use Tripletail qw(/dev/null);
use CGI;
$TL->startCgi(
-main => \&main,
);
sub main {
my $t = $TL->newTemplate('template.html');
my $cgi = CGI::new();
#前ページからPOSTデータの取得
$a = $cgi->param('a');
$b = $cgi->param('b');
$t->expand(
STR => $a,
NUM => $b,
);
$t->flush;
}
0301デフォルトの名無しさん
2008/10/28(火) 23:39:130302デフォルトの名無しさん
2008/10/28(火) 23:45:21ああ、ごめんなさい。
通常、Tripletailを使用せずにPOSTデータを取得する場合、
use CGI;
$cgi = CGI::new();
$data1 = $cgi->param('p_data1');
これで取得はできますが、
上記の sub mainの中で取得しようとすると、
取得できないようです。
まだわかりにくい説明かもしれませんが、お願いします。
0303デフォルトの名無しさん
2008/10/29(水) 00:40:510304デフォルトの名無しさん
2008/10/29(水) 01:18:30ありがとうございました。そのものずばりの参考ページのようです。
がんばって吸収したいと思います。
0305デフォルトの名無しさん
2008/10/29(水) 02:18:09> ありがとうございました。そのものずばりの参考ページのようです。
Perlの添付ドキュメントだけどな。おまえのPCにも入っているはず。
0306デフォルトの名無しさん
2008/10/29(水) 17:52:590307デフォルトの名無しさん
2008/10/29(水) 18:02:120308デフォルトの名無しさん
2008/10/31(金) 23:43:20教えてくれると、大変助かります。
0309デフォルトの名無しさん
2008/10/31(金) 23:55:58emacs または meadow
0310デフォルトの名無しさん
2008/10/31(金) 23:56:230311デフォルトの名無しさん
2008/11/01(土) 00:07:230312デフォルトの名無しさん
2008/11/01(土) 15:06:35Notepad++
0313デフォルトの名無しさん
2008/11/02(日) 13:55:18継承とかの説明をみるに、継承のスパゲッティになりそうな 気がするんですが
その辺はエキスパートの実際ってどうなんでしょうか?
0314デフォルトの名無しさん
2008/11/02(日) 14:00:30質問してないでソースコード読め。
0315デフォルトの名無しさん
2008/11/02(日) 18:17:250316デフォルトの名無しさん
2008/11/02(日) 18:21:460317デフォルトの名無しさん
2008/11/02(日) 19:05:200318デフォルトの名無しさん
2008/11/02(日) 19:45:140319デフォルトの名無しさん
2008/11/02(日) 23:19:24「CGI/Perl リファレンス」
こういう本があるんですがこの2つって同じようなもんなんですか?
CGI=掲示板 Perl=通信 ってイメージがあるんですが
0320デフォルトの名無しさん
2008/11/02(日) 23:28:09http://ja.wikipedia.org/wiki/Common_Gateway_Interface
http://ja.wikipedia.org/wiki/Perl
0321デフォルトの名無しさん
2008/11/02(日) 23:47:14system関数を使わないで実現したいです
0322デフォルトの名無しさん
2008/11/02(日) 23:57:190323デフォルトの名無しさん
2008/11/03(月) 00:27:35URI::Fetch
0324デフォルトの名無しさん
2008/11/03(月) 02:02:59なぜエラーにならなければならないの?
0325デフォルトの名無しさん
2008/11/03(月) 02:04:53他言語同様、継承はなるべく使わない方向で。
他言語での経験があるなら無問題。
0326デフォルトの名無しさん
2008/11/03(月) 02:07:45CGIがPerlで書かれたものとは限らない
ていうかCGIとPerlじゃ比べる次元が違う
とりあえずページめくれよ
0327デフォルトの名無しさん
2008/11/03(月) 02:08:47CPAN LWP::Simple検索してサンプル試してみ
0328デフォルトの名無しさん
2008/11/03(月) 23:12:57PPMでリポジトリを追加したら、フリーズして、そのまま動かなくなりました。
追加したリポジトリは http://ppm.tcool.org/archives/ です。
何度起動しても、起動時にフリーズします。
多分追加したリポジトリを読みに行ってる時に固まってるんだと思います。
どうやったらこのリポジトリを削除できるでしょうか。
C:\Perlの中のどこかにリポジトリのURLが保存されてて、それを消したら良いんじゃないかと考えたんですが
フォルダ内をGREPしてもURLは見つかりませんでした・・・。
0329デフォルトの名無しさん
2008/11/04(火) 00:38:30以下の、ppm〜なんちゃら.dbファイルを消す。
ってか、DOS窓からコマンドライン用のppmでやればいい。C:\Perl\htmlにマニュアルもあることだし。
0330デフォルトの名無しさん
2008/11/04(火) 01:36:33ありがとうございます。
言われて気づいてみたら、ppm-shellってのがあるんですね。
最近のActivePerlはGUI版PPMしか無いのかと思ってました。
0331デフォルトの名無しさん
2008/11/07(金) 18:37:21ファイルを開くと一応コマンドプロンプトが起動し、実行されるのですが一瞬で消えてしまいます。
最初は、
print"やあ世界!\n;"
exit;
としか書いてなくて、一瞬で終わっちゃうからだなと思い(一瞬ですがやあ世界という表示はされてました)、
入門書の例文にあった
print"名前を入力してください。\n";
$onamae=<STDIN>;
chop $onamae;
print"\n";
print"あなたのお名前は$onamaeさんです。\n;
print"$onamaeさんこんにちは。";
exit;
という内容のファイルを作ってみました。
しかし、名前を打ち込むスキもなく終了してしまいます。
エスパーにしか答えようがない質問かもしれませんが宜しくお願いします。
OSはXPで、入門書は2000年頃の古いものです。
0332デフォルトの名無しさん
2008/11/07(金) 18:48:53まさかファイルをエクスプローラ上でクリックして動かしてる?
それじゃダメだ
まずコマンドプロンプトを起動してそこで
C:\> perl [ ファイル名 ] [ RETURN ]
で実行しないと
0333デフォルトの名無しさん
2008/11/07(金) 18:55:09定番の入門書リャマ本
ttp://www.oreilly.co.jp/books/4873111269/
0334デフォルトの名無しさん
2008/11/07(金) 18:55:48ありがとうございます。
さきほどhttp://www.site-cooler.com/kwl/perl/を読んでやってみたら色々できました。
さっきの二番目の例文はなにかミスってるみたいでエラーがなんとかって英文で返されてしまいましたが。
なんだこの本・・・大事なことが書いてない。
0335デフォルトの名無しさん
2008/11/07(金) 18:57:34ありがとうございます。
また何かつっかえたら買い換えますw
0336デフォルトの名無しさん
2008/11/07(金) 19:11:310337デフォルトの名無しさん
2008/11/07(金) 21:14:29じゃあ、2008年6月発売のを
http://oreilly.com/catalog/9780596520106/
0338デフォルトの名無しさん
2008/11/08(土) 01:45:17>print"あなたのお名前は$onamaeさんです。\n;
文字列を閉じてない。「\n」の後に「"」が必要。
ところで、文字列のクォートにはqq{}もおすすめ。
0339デフォルトの名無しさん
2008/11/08(土) 17:11:08my %hash = @arr;
$hash{'SendTE'} = 0;
@arr = %hash;
ハッシュのように扱われてる特殊な配列に
重複しないキーを与えるには上記のように
書いていました。
これを一発で書くにはどう書けばいいでしょうか?
(配列をハッシュのように扱いたい。)
0340デフォルトの名無しさん
2008/11/09(日) 00:51:070341デフォルトの名無しさん
2008/11/09(日) 08:02:11普通に
my %hash = ( @arr, 'SendTE' => 0 ) ;
じゃダメなのか?サブルーチンとかでの常套手段だけど?
sub hoge {
my %hash= ( foo => 'bar', @_ ) ;
return $hash{foo} ;
}
printf "%s\n", hoge( foo => 'foo' ) ;
0342デフォルトの名無しさん
2008/11/09(日) 08:37:45どれが優先されるかは決まってたっけ?
%h = (a => 1, a=> 2);
print $h{a}
試せば今の処理系でどっちかはわかるけど、仕様としてマニュアル等に明記
されているかどうかを知りたい。
0343デフォルトの名無しさん
2008/11/09(日) 10:27:310344デフォルトの名無しさん
2008/11/09(日) 10:46:01programing perl のhashの説明、冒頭にそのまんまの記載があるじゃん。
my %h = ( a => 1, a=> 2 ) ;
は、以下のコードと同じ効果がある。
my %h = () ;
${a} = 1;
${a} = 2;
同じキーだと通用しないとでも思うのはあなたの勝手。
0345デフォルトの名無しさん
2008/11/09(日) 16:54:02上書きされるってことになるんだから()内がどっち向きに処理されるか考えりゃ良い
0346デフォルトの名無しさん
2008/11/09(日) 18:03:310347デフォルトの名無しさん
2008/11/09(日) 18:34:34なるのでしょうか?
use Data::Dumper;
$i = 0;
$arr[$i] = $i++;
print Dumper \@arr; #=> [undef, 0]
0348デフォルトの名無しさん
2008/11/09(日) 19:20:11俺のイメージでは、
= (代入するよー)
$i (右辺の$iは0だなー)
++($iをインクリメントするよー)
$arr[$i] ($arr[$i]に0代入するんだなー。$iはなんだろなー。1だなー)
ってことで、$arr[1]が0になる。
0349デフォルトの名無しさん
2008/11/09(日) 19:37:55ttp://archive.mag2.com/0000015670/19990811001000000.html?start=160
0350デフォルトの名無しさん
2008/11/09(日) 19:45:50�d
0351デフォルトの名無しさん
2008/11/09(日) 20:03:53そんなクソなコードは間違っても書かないから、どうでもいい。
まったく何の役にも立たないし、他の言語への応用も利かないムダ知識やん。
0352デフォルトの名無しさん
2008/11/09(日) 20:31:38perldataあたりざっと見てそれらしい記述を見つけられなかったのですが、
ラクダに書いてあるんなら仕様だと思っていいのかな。ありがとう。
0353デフォルトの名無しさん
2008/11/09(日) 20:37:06分かってたらそんな疑問は持たないはず。
0354デフォルトの名無しさん
2008/11/09(日) 20:38:34クイズのリンク先を読むと仕様ではっきり決まってないってあたりまで
説明されてるのでそういうコードは書いちゃいけないというところまで
理解すれば無駄ではないと思うよ。
0355デフォルトの名無しさん
2008/11/09(日) 20:42:51だから実際には問題になることがない問題なのだ。
0356デフォルトの名無しさん
2008/11/09(日) 20:46:12リストを連想配列に変換するときにどれを優先するかなんて必ずしも自明じゃないだろ。
ごく自然な仕様として、
* 前を優先する
* 優先順位は決めない
の二つがある。
0357デフォルトの名無しさん
2008/11/09(日) 21:07:04* 最後を優先する
に決まってるだろ。
右辺側は順序を保持するリストなんだから。
これはLISPでも、Cのカンマ演算子でも同じ、「最終評価値」の概念。
お前さんは以下のような仕様だと嬉しいにか?
$a = 1;
$a = 2; # $aの値は 1 のまま
0358デフォルトの名無しさん
2008/11/09(日) 21:21:070359デフォルトの名無しさん
2008/11/09(日) 21:23:450360デフォルトの名無しさん
2008/11/09(日) 21:33:280361デフォルトの名無しさん
2008/11/09(日) 21:36:45後者はそのとおりだが。前者は全く自明じゃない。
変な思い込みをする癖は直した方がいいよ。
0362デフォルトの名無しさん
2008/11/10(月) 00:13:56( )の処理が右から左だと思う根拠は?
0363デフォルトの名無しさん
2008/11/10(月) 00:20:230364デフォルトの名無しさん
2008/11/10(月) 00:36:38という主張です。根拠があるのなら示してもらえばそうでしたかで済みます。
もちろん右から左だという根拠も同じぐらいありません。
0365デフォルトの名無しさん
2008/11/10(月) 01:15:320366デフォルトの名無しさん
2008/11/10(月) 01:22:58ただの代入文で済ませてしまえる言語仕様が、諸悪の根源な気がする。
0367デフォルトの名無しさん
2008/11/10(月) 01:55:02「Perlはもうそろそろ終わり。Perlの経験を踏まえたあたらしいスクリプト言語へ
シフトしましょう……って、え? CGIってなに? あ、使うな!」
となってしまったこと。
0368デフォルトの名無しさん
2008/11/10(月) 02:02:16----
%a = (1,2,3,4,1,'a',2,'b',3,'c',4,'d');
print %a;
----
結果→4d1a3c2b # ハッシュだから順不同。
これ即ち (1=>'a' , 2=>'b' , 3=>'c' , 4=>'d')
馬鹿側が根拠を示すのも簡単だ。上記以外の結果を示せば良い。
馬鹿には無理だろうがな。
0369デフォルトの名無しさん
2008/11/10(月) 03:06:030370デフォルトの名無しさん
2008/11/10(月) 06:31:49自尊心だけは十分育ってるようだから、次は知能と知識だね。
頑張って!
0372デフォルトの名無しさん
2008/11/10(月) 10:20:200373デフォルトの名無しさん
2008/11/10(月) 12:47:06execしたプロセスが全部終了するまで
foo.plはロックされるものなのだろうか
0374デフォルトの名無しさん
2008/11/10(月) 13:34:04関係ないと思うよ
0375デフォルトの名無しさん
2008/11/10(月) 17:10:32現在の結城さんだったら把握してそうだけど。
>私が調べた限りでは、代入演算子の右と左でどちらを先に評価するかは、
>Perlの本には言及されていませんでした。
perltrap にばっちり記載されてる。
右辺を先に評価。
# perl の 5.005_02/ 1998-Aug-08 でも。
LHS vs. RHS of any assignment operator
LHS vs. RHS of any assignment operator. LHS is evaluated first in
perl4, second in perl5; this can affect the relationship between
side-effects in sub-expressions.
@arr = ( 'left', 'right' );
$a{shift @arr} = shift @arr;
print join( ' ', keys %a );
# perl4 prints: left
# perl5 prints: right
0376デフォルトの名無しさん
2008/11/10(月) 19:20:54__END__リテラルって意味わからんので、__DATA__セクションのことなんじゃないだろうか?
ただ、プロセス寿命の話なら、ちゃんとした仕様は
たぶんなくて、実装次第+環境次第だろと思う。
だいたい、UNIXとWindowsでかなり違うよな。
0377デフォルトの名無しさん
2008/11/10(月) 19:31:32ごめんリテラルじゃないね、セクションかトークンと言うべきだった。
うちの環境はWindows XP SP3 + ActivePerl v5.8.8 built for MSWin32-x86-multi-thread
Binary build 817 [257965] Built Mar 20 2006 17:54:25
らしい。
execしたプログラムが走ってる状態のままスクリプトを上書き修正しようとしたら
拒否されて不便だったんだけど、__END__削ったら上書きできた。
なにゆえなのか、よくわからない…
0378デフォルトの名無しさん
2008/11/10(月) 20:46:37初心者ですが、これは襲撃でした。
自然な思考法なら、perl4の結果を期待するのではないでしょうか?
(それは、初心者だけか)
0379デフォルトの名無しさん
2008/11/10(月) 20:47:15襲撃でなく、衝撃です。
0381デフォルトの名無しさん
2008/11/10(月) 21:35:40perlの全てを知ってるのが訓練されたperlプログラマーだ。
ほんとperlは地獄だぜ。HAHAHAHAHA
0382デフォルトの名無しさん
2008/11/10(月) 22:06:11これは1なんだな。わけわかんね。
0383デフォルトの名無しさん
2008/11/11(火) 01:36:13CGI = perl
0384デフォルトの名無しさん
2008/11/11(火) 07:33:410385デフォルトの名無しさん
2008/11/11(火) 07:40:28ruby,pythonと言う説を見かけました。
これは本当と言えますか?
0386デフォルトの名無しさん
2008/11/11(火) 07:59:060387デフォルトの名無しさん
2008/11/11(火) 08:46:36言える
0388デフォルトの名無しさん
2008/11/11(火) 09:10:17きれいなPerl=Ruby
Perlを捨てて0からシンプルかつ強力に作ったもの=Python
0389デフォルトの名無しさん
2008/11/11(火) 09:24:08解釈による。
オレ的には認めない。
「進化」ではないだろ。
0390デフォルトの名無しさん
2008/11/11(火) 09:31:33>__END__削ったら上書きできた。
もう一度落ち着いて、__END__セクションを追加してから
動作を確認するべき。
0391デフォルトの名無しさん
2008/11/11(火) 10:12:12サルが進化したものが人間。
perl が進化したものがruby/python
そゆこと?
0392デフォルトの名無しさん
2008/11/11(火) 10:16:25> サルが進化したものが人間。
> perl が進化したものがruby/python
スクリプト言語/インタプリタ言語の後発のものだということだから、
「perlが進化した」というように、単一の系列に押し込めるのは明らかな間違いだろう。
0393デフォルトの名無しさん
2008/11/11(火) 10:19:04レス有難うございます。
仮に、この三つを全然知らない場合、どれを会得しようと思いますか?
0394デフォルトの名無しさん
2008/11/11(火) 10:52:56初心者はPythonがお勧め。
0395デフォルトの名無しさん
2008/11/11(火) 11:12:48Python
0396デフォルトの名無しさん
2008/11/11(火) 11:42:200
ますますわけわかめ
0397デフォルトの名無しさん
2008/11/11(火) 12:21:430398デフォルトの名無しさん
2008/11/11(火) 12:56:02それはええやろw
0399デフォルトの名無しさん
2008/11/11(火) 13:00:42Perl。
念のために言っとくが、ここはPerlスレだからな!w
0400デフォルトの名無しさん
2008/11/11(火) 13:55:080401デフォルトの名無しさん
2008/11/11(火) 13:58:02これ左辺から評価してる?
0402デフォルトの名無しさん
2008/11/11(火) 14:39:45ちがうよ!全然ちがうよ!
>>382と>>396を見比べるとすごく気持ちわるいんだよ!
0403デフォルトの名無しさん
2008/11/11(火) 15:21:21$i=0; $arr[++$i]=++$i; print $arr[2]
0404デフォルトの名無しさん
2008/11/11(火) 15:49:19演算子の優先順位
左結合 項 リスト演算子 (左方向に対して)
左結合 ->
非結合 ++ --
ずーっと下に
右結合 = += -= *= などの代入演算子
0405デフォルトの名無しさん
2008/11/11(火) 18:34:59環境依存の可能性が高いので、Activeperl 5.8 + WinXP 限定の話として...
perlは__END__(又は__DATA__)を見つけると、ソースファイルをcloseせずに処理を開始する。
そしてexecしたプロセスに開いたファイルが引き継がれる。
ただしperlは単にファイルをリードオープンしているだけであり、何もロックしていないので、
ファイルの中身を書き換える事は可能。
Winでは開かれたファイルのリネームや削除が失敗するので、それに引っかかっているのでは?
>>382,396
perlの中では参照渡しだし、ポストインクリメント演算子は元の値を保持するための一時変数を作る。
配列用の代入処理部へは \配列,\要素番号,\値 が渡される
前者(382)では \@arr,\${古い$iの値(0)を保持している一時変数},\$i を渡すのに対して、
後者(396)だと \@arr,\${古い$iの値(1)を保持している一時変数},\${古い$iの値(0)を保持している一時変数}
を渡すという違い。
0406デフォルトの名無しさん
2008/11/11(火) 18:55:14Storableを使ってハッシュをバイナリデータに書き出す際、
上書きではなく追加書き込みで保存する方法はあるのでしょうか。
例
test.pl
---
use strict;
use Storable qw(nstore);
%hash = (
"a" => '1',
"b" => '2',
);
nstore [%hash], "hash.dat";
----
test.plを一度実行し、hash.dat生成
0407デフォルトの名無しさん
2008/11/11(火) 18:55:47その後test.pl内の%hashを
----
%hash = (
"c" => '3',
"d" => '4',
);
----
に書き換えて保存、再度test.plを実行
…するとhash.dat内には
c=>3 と d=>4 のペアしか存在していません。
つまり上書き保存されていることになります。
自分は追加保存の形にしたいのですが、
何かいい案がありましたらご教授ください。
よろしくお願いします。
0408デフォルトの名無しさん
2008/11/11(火) 19:11:12まず元のを読んでから要素を追加して書けばいいと思うよ
0409デフォルトの名無しさん
2008/11/11(火) 21:56:02外部プログラムを起動して、そのプログラムの実行中にperlから値を渡すといったことはできないでしょうか
あるCのプログラムを実行しscanfで入力待ちになり、そこへ値を渡すといった感じなのですが
0410デフォルトの名無しさん
2008/11/11(火) 21:56:410411デフォルトの名無しさん
2008/11/12(水) 23:35:47>>>>>>>>>>>>>>>>>>>>>>>>>>>
配列,2次元配列を用いて, santaku.pl を以下のようにグレードアップせよ.
○ 3択の問題を4題出題し,正解数を最後に表示.
$mondai を @mondai にして配列化
@sentakuを 2次元配列化 $santaku[A][B]の形
$kotaeを @kotaeにして,配列化
これを santaku2.pl という名前で保存して動かす
0412デフォルトの名無しさん
2008/11/12(水) 23:36:52# santaku.pl
# 問題
$mondai="東京ディズニーリゾートがあるのは次の内,どこか?";
# 選択肢
$sentaku[1]="東京県";
$sentaku[2]="千葉県";
$sentaku[3]="神奈川県";
# 答え
$kotae=2;
#
$user=0;
printf ("%s\n", $mondai); # 問題の表示
for ($i=1; $i<=3; $i++) { # 選択肢の表示
printf ("[%d] %s\n", $i, $sentaku[$i]);
}
printf ("答えを1〜3から選んでください ");
$user=<>;
if ($user==$kotae) {
printf ("正解\n");
} else {
printf ("不正解\n");
}
exit;
よろしくお願いします(;へ;)
0413デフォルトの名無しさん
2008/11/12(水) 23:47:420414デフォルトの名無しさん
2008/11/12(水) 23:55:391つずつやったら面倒だから二次元配列にするというのはなんとなくわかるのですが
どこから手をつけていいのか;;;
forを2重でつかったりもするんでしょうか・・・頭が痛いです;
0415デフォルトの名無しさん
2008/11/13(木) 00:04:410416デフォルトの名無しさん
2008/11/13(木) 00:16:040417デフォルトの名無しさん
2008/11/13(木) 00:29:28とりあえず、問題と答えを4問分2次元配列にして、
正解数をカウントする変数をつくればできると思う
0418デフォルトの名無しさん
2008/11/13(木) 01:05:450419デフォルトの名無しさん
2008/11/13(木) 01:11:16どうですか??正解数をカウントする変数はさっぱりです><
# =================== データ部分 ==========================
# 問題
$mondai[1]="東京ディズニーリゾートがあるのは次の内,どこか?";
$mondai[2]="東京大学があるのは次の内,どこか?";
$mondai[3]="横浜があるのは次の内,どこか?" ;
# 選択肢
$sentaku[1]="東京県"; $sentaku[2]="千葉県"; $sentaku[3]="神奈川県";
# 答え
$kotae[1]=2;
$kotae[2]=1;
$kotae[3]=3;
# =========================================================
#
# =================== 手続き部分 ==========================
#
$user=0;
printf ("%s\n", $mondai); # 問題の表示
for ($i=1; $i<=3; $i++) { # 選択肢の表示
printf ("[%d] %s\n", $i, $sentaku[$i]);
}
printf ("答えを1〜3から選んでください ");
$user=<>;
if ($user==$kotae) {
printf ("正解\n");
} else {
printf ("不正解\n");
}
exit;
0420デフォルトの名無しさん
2008/11/13(木) 01:36:31どちらかというとアバウトな言語だと、教える方も大変だろうに。
rubyとかpythonの方がよさそうだが
0421デフォルトの名無しさん
2008/11/13(木) 01:39:28さっぱりです><
basic c javaなら講義中に名前を見ましたが。。
その教授はperlが使いやすいといっていたので、、よくわかりませんが
どなたかよろしくお願いします;明日の朝提出なので><
0422デフォルトの名無しさん
2008/11/13(木) 01:58:02毎日わかったところまでをここで聞いていればよかったのに。
printfだけなおして友達のを写した方が早いよ
0423デフォルトの名無しさん
2008/11/13(木) 02:11:290424デフォルトの名無しさん
2008/11/13(木) 02:27:030425デフォルトの名無しさん
2008/11/13(木) 08:04:28# 問題
my @mondai=();
$mondai[0]="東京ディズニーリゾートがあるのは次の内,どこか?";
$mondai[1]="東京大学があるのは次の内,どこか?";
$mondai[2]="横浜があるのは次の内,どこか?";
# 選択肢
my @sentaku=();
$sentaku[0][0]="東京県"; $sentaku[0][1]="千葉県"; $sentaku[0][2]="神奈川県";
$sentaku[1][0]="東京県"; $sentaku[1][1]="千葉県"; $sentaku[1][2]="神奈川県";
$sentaku[2][0]="東京県"; $sentaku[2][1]="千葉県"; $sentaku[2][2]="神奈川県";
# 答え
my @kotae=(2,1,3);
# =================== 手続き部分 ==========================
my @input=();
for(my $cnt=0;$cnt<scalar(@mondai);$cnt++){
printf("%s\n", $mondai[$cnt] ); # 問題の表示
for(my $cnt2=0;$cnt2<3;$cnt2++) { # 選択肢の表示
printf("[%d] %s\n",$cnt2,$sentaku[$cnt][$cnt2] );
}
printf("答えを1〜3から選んでください");
my $user=<>;
push @input,$user;
}
exit;
とりあえず、問題表示部分だけ。正誤判定は自分で考えてください。
…ところで、「@sentakuを 2次元配列化 $santaku[A][B]の形」が嫌だなぁ。
リファレンス($santaku->[A][B])使っちゃ駄目なのかな?
0426デフォルトの名無しさん
2008/11/13(木) 08:13:52# 問題
my @mondai=("東京ディズニーリゾートがあるのは次の内,どこか?",
"東京大学があるのは次の内,どこか?","横浜があるのは次の内,どこか?");
# 選択肢
my @sentaku=(["東京県","千葉県","神奈川県"],["東京県","千葉県",
"神奈川県"],["東京県","千葉県","神奈川県"]);
# 答え
my @kotae=(2,1,3);
# =================== 手続き部分 ==========================
my @input=();
for(my $cnt1=0;$cnt1<scalar(@mondai);$cnt1++){
printf("%s\n", $mondai[$cnt1] ); # 問題の表示
for(my $cnt2=0;$cnt2<scalar(@{$sentaku[$cnt1]});$cnt2++) { # 選択肢の表示
printf("[%d] %s\n",$cnt2,$sentaku[$cnt1][$cnt2] );
}
printf("答えを1〜3から選んでください");
my $user=<>;
push @input,$user;
}
exit;
この方がスッキリしてて良いかな?
0427デフォルトの名無しさん
2008/11/13(木) 09:22:270428デフォルトの名無しさん
2008/11/13(木) 09:35:48おまえが率先して作らないからだろ。司令官どの。
0429デフォルトの名無しさん
2008/11/13(木) 10:50:480430デフォルトの名無しさん
2008/11/13(木) 10:52:18>リファレンス($santaku->[A][B])使っちゃ駄目なのかな?
よく、質問を質問で返す人がいるよね。
しかも、「・・・じゃダメなの?」という言い方する人が結構多い。
なんか頭悪そう。
0431デフォルトの名無しさん
2008/11/13(木) 10:57:070432デフォルトの名無しさん
2008/11/13(木) 11:05:000433デフォルトの名無しさん
2008/11/13(木) 11:27:510434デフォルトの名無しさん
2008/11/13(木) 11:28:49$[ = 1 とすればいいが、そんなの私は実際に使ったことない(使う必要ない)。
それに、問題、選択肢、回答と別々の配列変数に入れて、添え字でくくるのも
気持ち悪い。私なら無名ハッシュの配列を作るが。
my @mondai = (
"東京ディズニーリゾートがあるのは次の内,どこか?",
"東京大学があるのは次の内,どこか?",
"横浜があるのは次の内,どこか?",
);
my @sentaku = (
["東京県","千葉県","神奈川県"],
["東京県","千葉県","神奈川県"],
["東京県","千葉県","神奈川県"],
);
my @kotae = (2,1,3);
for my $q(0..@mondai-1) {
print $mondai[$q], "\n";
for my $i(1..@{$sentaku[$q]}) {
printf("[%d]%s\n", $i, $sentaku[$q][$i-1]);
}
my $input;
while (1) {
printf "答えを1〜3から選んでください: ";
chomp($input = <STDIN>);
last if $input =~ /^[1-3]$/;
}
print $input == $kotae[$q] ? "○正解" : "×不正解";
print "\n\n";
}
print "終わり\n";
0435デフォルトの名無しさん
2008/11/13(木) 11:29:040437デフォルトの名無しさん
2008/11/13(木) 11:31:140438デフォルトの名無しさん
2008/11/13(木) 11:33:410439デフォルトの名無しさん
2008/11/13(木) 11:34:14神戸県ですね、わかります。
0440デフォルトの名無しさん
2008/11/13(木) 11:38:27コメントや文字列リテラルの中のスペルミスやtypoに
突っ込まざるを得ない人たちが集まるスレはここですか?
0441デフォルトの名無しさん
2008/11/13(木) 11:41:17そういう言い方しちゃダメなの?
0442デフォルトの名無しさん
2008/11/13(木) 11:43:21頭が悪いので教えてください。
0443デフォルトの名無しさん
2008/11/13(木) 11:45:36「本質的」とか言い出すあたり、すごく頭悪そう。
0444デフォルトの名無しさん
2008/11/13(木) 11:47:230445デフォルトの名無しさん
2008/11/13(木) 11:47:32議題は横浜がどこにあるか です
0446デフォルトの名無しさん
2008/11/13(木) 11:47:43そんなに恥ずかしかった?
0447デフォルトの名無しさん
2008/11/13(木) 12:06:20my @sentaku = (["東京県","千葉県","神奈川県"])x3;
とか短くできんのかな?
0448デフォルトの名無しさん
2008/11/13(木) 12:11:530449デフォルトの名無しさん
2008/11/13(木) 12:16:13俺なら47都道府県を別配列で持っておいて、インデックスの配列で指定する。
my $sentaku = [
[1,2,3],
[1,2,3],
[1,2,3],
];
0450デフォルトの名無しさん
2008/11/13(木) 12:16:17「質問に質問で返す」ことはなぜよくないこととされているのでしょうか。
ttp://q.hatena.ne.jp/1144955089
0451デフォルトの名無しさん
2008/11/13(木) 12:26:580452デフォルトの名無しさん
2008/11/13(木) 12:32:45って430までで唯一「・・・じゃダメなの?」を使ったオレが
顔を真っ赤にしてカキコ。
>>447
my @arr = ( ([1,2 ]) x 2 ) ;
0453デフォルトの名無しさん
2008/11/13(木) 12:34:56埼玉都はネタだけど、神戸県は明治初期に実在した。
0454デフォルトの名無しさん
2008/11/13(木) 12:35:15リファレンス使わない2次元配列なんて、逆にわからんわ
0455デフォルトの名無しさん
2008/11/13(木) 12:43:292問目の選択肢が変更になったらどうするのかねアンダーソン君
0456デフォルトの名無しさん
2008/11/13(木) 13:00:06リファレンス使わない2次元配列なんてない、
てことはリファレンスは使っていいのか、
となると2次元配列じゃない方がやりやすくね?
ってなるんだが。
0457デフォルトの名無しさん
2008/11/13(木) 13:11:470458デフォルトの名無しさん
2008/11/13(木) 13:35:50すごく頭悪そう。
0459デフォルトの名無しさん
2008/11/13(木) 15:09:100460デフォルトの名無しさん
2008/11/13(木) 16:20:56my $ok = 0;
TEST: for ( @qz ) {
print $_->{'質問'} . "\n";
print "\t$_\n" for ( @{$_->{'選択肢'}} );
while (1) {
print '正しい選択肢の番号を入力してください(中止:q): ';
chomp ( my $c = <STDIN> );
last TEST if $c =~ /q/i;
if ( $c =~ /^\d+$/ && 1 <= $c && $c <= @qz ) {
$c == $_->{'答'} ? ( print "正解" and $ok++ ) : print "不正解";
last;
}
}
print "。\n\n";
}
print "$ok 問正解しました。\n";
0461407
2008/11/13(木) 16:33:58レスありがとうございます。
規制に巻き込まれてしまい、返事が遅くなってしまいました
やはり一度読み込み直すしかありませんか…
外部データが増えるとそれだけ読み込み・追加・書き出しに時間がかかってしまうので
何とか追加だけでやりくり出来ないかと考えていたのです。
アドバイスと合わせ、色々模索してみたいと思います
0462460
2008/11/13(木) 16:48:31正 $c <= @{$_->{'選択肢'}}
余計なことするといつも恥をかく...orz
0463デフォルトの名無しさん
2008/11/13(木) 18:20:36> やはり一度読み込み直すしかありませんか…
いや。
普通、DBM類を使う。
0464デフォルトの名無しさん
2008/11/13(木) 19:39:19全ての面倒を読み込み側に押し付けるって手もある。
保存用フォルダに "${^T}.${$}" 等のファイル名で書き出すとか。
0465デフォルトの名無しさん
2008/11/13(木) 20:08:32する事になりました。
バーチャルサーバーを立ててWEBチームにテストしてもらっていたのですが、
動かない部分がいくつかある模様です。
WEBチームからPerlのバージョンアップによって
命令がどう変わったか等を調べて欲しいと頼まれたのですが、
どのようにして調べれば良いのでしょうか?
ご教授お願いいたします。
0466デフォルトの名無しさん
2008/11/13(木) 20:21:12http://perldoc.perl.org/index-history.html
0467デフォルトの名無しさん
2008/11/13(木) 20:47:19そもそも(発端になった)>>435は質問に、まったく答えてない訳でも
無いのに…。
「夕飯何にしようか?」
「肉が良いなぁ。焼肉としゃぶしゃぶどっちが良い?」
「質問を質問で返すなm9(^Д^)プギャー」
とか言っちゃうのかな?(w
0468デフォルトの名無しさん
2008/11/13(木) 20:51:270469デフォルトの名無しさん
2008/11/13(木) 21:00:570470デフォルトの名無しさん
2008/11/13(木) 21:03:53>命令がどう変わったか
「命令」は変わってないよな。w
マジレスすると、変更内容を調べるよりも、
ダメなところを特定して調整するほうがきっとマシ。
それがイヤなら、Perlのバージョンを戻せ。
つか、両方インストールして使いわけろよ。ふぁ。
0471デフォルトの名無しさん
2008/11/13(木) 21:12:38キーの重複はかまわないのか?
☆かまわない
別のファイルに出力してから、もとのファイルに
くっつければいいんじゃね。
☆ダメ
前のファイルを読み込まずに、重複を調べる
方法を教えろ。
続きはそれからだ。
0472デフォルトの名無しさん
2008/11/13(木) 21:51:49○ 続きはよそでやれ。
0473デフォルトの名無しさん
2008/11/13(木) 21:56:22「普通に焼肉じゃいけないの?」
0474デフォルトの名無しさん
2008/11/13(木) 21:56:52「普通にしゃぶしゃぶじゃいけないの?」
0475デフォルトの名無しさん
2008/11/13(木) 21:57:56「普通にカレーじゃいけないの?」
0476デフォルトの名無しさん
2008/11/13(木) 21:59:48「ラーメンじゃダメなの?」
0477デフォルトの名無しさん
2008/11/13(木) 22:32:54「俺が決めていいの?」
0478デフォルトの名無しさん
2008/11/14(金) 01:30:11妻「何が食べたいの?」
夫「質問に質問で返すなっ!!」
……これが>>430の結婚生活(もしあったとして)
0479デフォルトの名無しさん
2008/11/14(金) 05:35:27「晩飯じゃないの?」
0480デフォルトの名無しさん
2008/11/14(金) 06:10:57継承がうまく動かないのですが、どうすれば良いでしょうか。
$foo = Foo->new(); # OK
$bar = Bar->new(); # NG
package Foo;
sub new { bless {}; }
package Bar;
@ISA = qw(Foo);
これだと Bar->new() が失敗します。
package Bar 部分を Bar.pm というファイルにして、ファイル先頭で use Bar すると
問題ないのですが、単一ファイル内で継承させる場合はどう書けば良いのでしょうか。
0481デフォルトの名無しさん
2008/11/14(金) 06:42:23sub new { bless {}; } }
{package Bar;
@ISA = qw(Foo);}
$foo = Foo->new(); # OK
$bar = Bar->new(); # OK
0483デフォルトの名無しさん
2008/11/14(金) 08:40:19sub new { bless {}; }
package Bar;
@ISA = qw(Foo);
package main;
$foo = Foo->new(); # OK
$bar = Bar->new(); # OK
じゃねえの
0484デフォルトの名無しさん
2008/11/14(金) 14:24:45妻「スキヤキじゃダメなの?」
夫「・・・」
0485デフォルトの名無しさん
2008/11/14(金) 14:26:27妻「男じゃダメなの?」
夫「・・・」
0486デフォルトの名無しさん
2008/11/14(金) 19:10:29その流れはヤバい!w
もう離婚するしかないな。
0487デフォルトの名無しさん
2008/11/14(金) 20:42:25童貞の俺にも分かるように詳しく
0488デフォルトの名無しさん
2008/11/14(金) 20:53:250489デフォルトの名無しさん
2008/11/14(金) 21:03:130490デフォルトの名無しさん
2008/11/14(金) 21:50:280491デフォルトの名無しさん
2008/11/14(金) 21:58:27トン
0492デフォルトの名無しさん
2008/11/14(金) 22:46:06それは俺も考えたけど、
それだとスキヤキが説明できない。
0493デフォルトの名無しさん
2008/11/15(土) 05:16:10もう嫁ケンカうってるじゃんw
0494デフォルトの名無しさん
2008/11/15(土) 09:03:030495デフォルトの名無しさん
2008/11/15(土) 10:19:130496デフォルトの名無しさん
2008/11/15(土) 19:02:170497デフォルトの名無しさん
2008/11/15(土) 19:58:510498デフォルトの名無しさん
2008/11/16(日) 02:32:110499498
2008/11/16(日) 02:36:14一方には改行コードが含まれていないだけでした。
0500デフォルトの名無しさん
2008/11/16(日) 10:31:38$pat = "foo"; $str =~ /$pat/; # この場合 /foo/ と同じ
変数に含まれる文字を全て普通の文字としてマッチさせるにはどうしたらいいでしょうか。
たとえば $pat = "foo[0]"; だと、/$pat/では[0]の部分を文字クラスとして処理するよう
ですが、単純に "foo[0]" という文字にマッチしてほしいのです。
0501デフォルトの名無しさん
2008/11/16(日) 10:36:150502デフォルトの名無しさん
2008/11/16(日) 13:14:45Note: including file: d:/projects/game/include\common.h
Note: including file: d:/projects/game/include\product.h
Note: including file: d:/projects/etc/psdk/include\WindowsX.h
Note: including file: d:/projects/etc/psdk/include\windows.h
こういうファイルを
dmain.obj: \
/cygdrive/d/projects/game/include/common.h \
/cygdrive/d/projects/game/include/product.h \
/cygdrive/d/projects/etc/psdk/include/WindowsX.h \
/cygdrive/d/projects/etc/psdk/include/windows.h \
dmain.cpp
こんな風にするスクリプトってどうやるの?
0503デフォルトの名無しさん
2008/11/16(日) 13:57:440504デフォルトの名無しさん
2008/11/17(月) 20:02:29を掲示板のCGIのサーバーとは異なるサーバーに置きたいのですが、その場合どのように
すればよいでしょうか? できればmySQLサーバーはインジェクションの関係で使いたくあり
ません。
サーバー1 掲示板cgiや画像データなどを担当
サーバー2 掲示板テキストデータ(掲示板cgiから読み書きされる)
なにかアドバイスをお願いします。
0505デフォルトの名無しさん
2008/11/17(月) 20:11:26NFSマウント。とネタレス。
WebProg行け。とマジレス。
その質問だとperl無関係だから、いきなりperlのスレに行くなよ…。
0506デフォルトの名無しさん
2008/11/18(火) 19:27:48に記載されている通りにやったのですが、
C:\strawberry\cpan\build\DB_File-1.817-XRfyBQ>perl Makefile.pl
Parsing config.in...
Looks Good.
Note (probably harmless): No library found for -llibdb
Writing Makefile for DB_File
C:\strawberry\cpan\build\DB_File-1.817-XRfyBQ>dmake
cp DB_File.pm blib\lib\DB_File.pm
AutoSplitting blib\lib\DB_File.pm (blib\lib\auto\DB_File)
gcc -c -I/usr/local/BerkeleyDB/include -s -O2 -DWIN32 -DHAVE_DES_FCRYPT
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_
READFIX -s -O2 -DVERSION=\"1.817\" -DXS_VERSION=\"1.817\" "-IC:\strawberry
\perl\lib\CORE" -D_NOT_CORE -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t versi
on.c
version.c:30:16: db.h: No such file or directory
dmake: Error code 129, while making 'version.o'
と出てしまい、DB_Fileが結局インストールされません。
INCLUDEもLIBも自分の環境に沿って変えているのですが出来ません。
どなたかよろしくお願いします。
0507デフォルトの名無しさん
2008/11/18(火) 20:14:56以下のjavaを
// 平均パケット到着レートの算出&ヒストグラム構成
if (preTimeList.size() >= pktNumForCalcRateAverage) {
sampleAveRate = pktNumForCalcRateAverage / (nowTime - preTimeList.remove(0));
int point = (int)(sampleAveRate / gap);
histgram[point] += 1;
total += sampleAveRate;
lineNum += 1;
}
をperlに書き変えたいのですが
# 平均パケット到着レートの算出&ヒストグラム構成
if ($preTimeList.size() >= $pktNumForCalcRateAverage) {
$sampleAveRate = $pktNumForCalcRateAverage / ($nowTime - $preTimeList.remove(0));
$point = ($sampleAveRate / $gap);
$histgram[$point] += 1;
$total += $sampleAveRate;
$lineNum += 1;
}
ではエラーが出てしまいうまくいきません。
nowTimeが間違っているのでしょうか?
どなたかアドバイスお願いします。
0508デフォルトの名無しさん
2008/11/18(火) 21:14:270509デフォルトの名無しさん
2008/11/18(火) 21:56:41javaの文章に適当に$つけりゃperlになるとでも思ってんのかねえ?
0510デフォルトの名無しさん
2008/11/18(火) 21:58:070511デフォルトの名無しさん
2008/11/18(火) 22:36:19そういうクセをつけてあげないと、本人のために良くないだろ。
0512デフォルトの名無しさん
2008/11/18(火) 22:57:13完全同意なんだけどねえ。
車を運転しようとしてる9歳児に「交通規則は守れるか?」
って問うくらいには見当違いだと思う。
0513デフォルトの名無しさん
2008/11/18(火) 23:17:55待とうじゃないか。
0514デフォルトの名無しさん
2008/11/19(水) 00:13:09ありがとうございます。別にきいてみようとおもいます。
0515デフォルトの名無しさん
2008/11/19(水) 00:44:16- java の . と perl の . の違い
- int の意味
- java の size メソッドと perl の scalar @arr で何が得られるか
- java の remove メソッドと perl の shift ( or splice )
- 更には各変数と配列に何が入っててどういう状態なのか
- 前後にどういう処理が行なわれているか
これが直に答えられないなら移植なんか考えない方が良いよ。
0516506
2008/11/19(水) 03:43:41No library found for -ldb でした…。
どなたかよろしくお願いします…。
0517デフォルトの名無しさん
2008/11/19(水) 07:47:34dbは正常にインストールされているのか
0518デフォルトの名無しさん
2008/11/19(水) 19:35:21じゃあ何と言うべきなの?
キミにはまだ早い、オトナになるまで待ちなさい、とでも?
0519デフォルトの名無しさん
2008/11/19(水) 19:45:50でおk
0520506
2008/11/20(木) 00:21:04dbというとちょっと分からないのですが、
Berkeley DB 4.6.21 をインストールして、
http://www.drk7.jp/MT/archives/001422.html
に書いてある通りに全ての手順を踏んだのですが、
No library found for -ldb
となって出来ないんです…。
0521デフォルトの名無しさん
2008/11/20(木) 04:46:40gcc -c -I/usr/local/BerkeleyDB/include -s -O2 -DWIN32 -DHAVE_DES_FCRYPT
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_
READFIX -s -O2 -DVERSION=\"1.817\" -DXS_VERSION=\"1.817\" "-IC:\strawberry
\perl\lib\CORE" -D_NOT_CORE -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t versi
on.c
-L オプションが見当たらないけど、なんで?
-IC:\strawberry\perl\lib\CORE" って正しいのかな?lib のディレクトリを -I で指定してるけど。
lib ディレクトリにヘッダファイルが入ってるの??
-ldb が無い、って言ってるんだから、ほんとうに無いのか、あるのか、自分の目で確かめたかな?
-ldb と省略せずに、\hoge\hage\libdb.l みたいにフルパスで指定してみてはどうか?
0522デフォルトの名無しさん
2008/11/20(木) 20:16:22とするときに、1つ前のディレクトリにあるファイルを指定したいのですが、どうすればいいでしょうか?
require '../ファイル名';
だとエラーがでてしまい、できません。
0523デフォルトの名無しさん
2008/11/20(木) 21:40:271つ前の前に現在地がどこかを考えるんだ
../ や ~/ はシェルの機能なんだ
0524デフォルトの名無しさん
2008/11/21(金) 02:09:21スクリプト保存場所と実行場所が同じならそれで動く。
(多分このケースだろうけど)違って場所固定ならスクリプトに
use FindBin;
require "$FindBin::Bin/../hoge.pl" ;
但し、FindBin はケースによってスクリプト保存場所を
示さない場合があるので、そんな場合には FindBin::Real
だか CPAN から引っ張って来て使う。
(蛇足)スクリプト内でカレントディレクトリに動的変化があり、
require する対象も連動変化があるなら、
use Cwd ;
しといて
require getcwd . q{/../hoge.pl}しなきゃならん。
0525デフォルトの名無しさん
2008/11/21(金) 02:16:40「保存場所に関係無く、実行場所の ../ にあるならそれで動く。」
に訂正。
0526デフォルトの名無しさん
2008/11/21(金) 03:33:20カレントディレクトリをスクリプトのあるディレクトリに移動させておく、とか
そういう処理が必要だろうな。
0527デフォルトの名無しさん
2008/11/21(金) 06:37:050528506
2008/11/21(金) 13:19:05返信ありがとうございます。
libdb.a
というのは前述したURLに書いてある通りに作成しました。
-Lオプションに関してはわかりません…。
確認したところ
\strawberry\perl\lib\CORE
にヘッダファイルがたくさん入ってました。
-ldbに関しては検索しているのですが、どうしてもわからないんですよね。
やはりWindowsでperl環境は無茶があるのでしょうか。
0529デフォルトの名無しさん
2008/11/21(金) 17:18:30なんか>>506のエラーは
エラー情報(version.cないよ、コンパイルエラーみたいな)っていうのは、
そのページの「CPAN で DB_File をインストール → 必ず失敗する。」のところだから
そのまま次の「config.in を修正して DB_File を手動で dmake してインストール」
にいけばいいんじゃないの? そこでLIBパス設定してるし
0530506
2008/11/22(土) 01:11:58返信ありがとうございます。
修正して、dmakeしたところ
C:C:\strawberry\cpan\build\DB_File-1.817-aAwZC0>dmake
dlltool --def DB_File.def --output-exp dll.exp
g++ -o blib\arch\auto\DB_File\DB_File.dll -Wl,--base-file -Wl,dll.base -mdll -s
-L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" version.o DB_File.o -Wl,
--image-base,0x2d2e0000 C:\strawberry\perl\lib\CORE\libperl510.a \strawberry\c\
lib\libmsvcrt.a \strawberry\c\lib\libmoldname.a \strawberry\c\lib\libkernel32.a
\strawberry\c\lib\libuser32.a \strawberry\c\lib\libgdi32.a \strawberry\c\lib\lib
winspool.a \strawberry\c\lib\libcomdlg32.a \strawberry\c\lib\libadvapi32.a \stra
wberry\c\lib\libshell32.a \strawberry\c\lib\libole32.a \strawberry\c\lib\libolea
ut32.a \strawberry\c\lib\libnetapi32.a \strawberry\c\lib\libuuid.a \strawberry\c
\lib\libws2_32.a \strawberry\c\lib\libmpr.a \strawberry\c\lib\libwinmm.a \strawb
erry\c\lib\libversion.a \strawberry\c\lib\libodbc32.a \strawberry\c\lib\libodbcc
p32.a dll.exp
version.o:version.c:(.text+0x7a): undefined reference to `db_version'
DB_File.o:DB_File.c:(.text+0x10d5): undefined reference to `db_create'
collect2: ld returned 1 exit status
dmake: Error code 129, while making 'blib\arch\auto\DB_File\DB_File.dll'
となりました…。
blib\arch\auto\DB_File\
には.existsファイルしかありませんでした。
0531デフォルトの名無しさん
2008/11/22(土) 21:00:21libdb.a はちゃんと C:\strawberry\c\lib\ にあるのかい?ってのと
↑には libdb.a という文字が登場しないなってのがあやしいかと。
0532デフォルトの名無しさん
2008/11/22(土) 22:41:13mirror呼ぶと$tmpfile作るみたいなのだけど、そのstatのrdeb, size, blocksが0になって以下のエラーがでます。
Transfer truncated: only 0 out of 9446 bytes received
何かわかれば教えてもらえますか?
LWP::UserAgent 5.819
FreeBSD 6.1-RELEASE-p23
This is perl, v5.8.8 built for i386-freebsd-64int
0533デフォルトの名無しさん
2008/11/22(土) 23:43:51リポジトリ追加してもパッケージ数が0で何かと思ったらそういうことか…。
0534506
2008/11/23(日) 01:56:00解決しました!
531さんに指摘されて、libdb.aという文字が出ないのかを考えたところ、
ファイル名だけ変えていて、拡張子が変わっていませんでした。
要はlibdb.a.libというファイルでした。
なので拡張子変換ソフトを使ったところ上手くいきました!
本当ありがとうございます!
0535デフォルトの名無しさん
2008/11/24(月) 01:41:411.50になってから、$mech->get('http://example.com/')なんかでgetsしてきたページの内容を
$mech->content()で書き出すと、utf8フラグ付の文字列に自動でdecodeされたものが出力されます。
($mech->response->contentでは、そのまま変換なしで返ってきます。)
さらにこの状態で、$mech->find_linksやfind_images,$mech->form->inputsなどの戻り値オブジェクトから
$_->textや$_->valueなども、utf8_decodeされたものが返ってくるようになりました。
これはこれで、戻り値を正規表現等で検知するのに便利になった部分もあるのですが、
今少しばかり困ったことになっております。
実は、とあるサイトをクロールしていて、そのページ自体はsjisで書いてあるのですが、
ページのheaderに、<meta http-equiv="content-type" content="EUC-JP">とかの記述があって、
どうもこの記述を鵜呑みにして、元の文字列をEUC-JPとしてdecodeをしてしまって、化けバケになりました。
0536535
2008/11/24(月) 01:42:13探したんですが、それが見当たりません。
ドキュメントやソースファイルを読んでみて、Mechanize.pm内部で、$content = $res->decoded_content()
が呼ばれているようで、それではとHTTP::MessageやHTTP::Headerにある、Encodingヘッダーやcontent_encoding
あたりで制御するのかなと色々やって見ましたが、やっぱりutf8デコードされてしまいます。
(と言うか、イマイチこれらの使い方が合ってるのかよくわかりません。)
どなたかこれらの制御方法をご存知の方はおりませんか?
現在のところ、WWW::Mechanizeを1.34以下に戻すか、実行スクリプトの中で
*HTTP::Message::decoded_content = sub { shift->content };
と書く、などで回避しておりますが、もっとスマートな方法がないのかなと思っております。
0537デフォルトの名無しさん
2008/11/24(月) 17:23:57sysopen(TPL, $file, O_RDONLY)
のとこで
Argument "O_RDONLY" isn't numeric in sysopen
というerrorを毎回吐きます。
動作は見たところ正常ですが、Apacheのerror_logにたまるのが気持ち悪くて…。
どこのサンプルにもマニュアルにも上の通りにかいてありますが、
O_RDONLYじゃいかんのですか?
0538デフォルトの名無しさん
2008/11/24(月) 17:33:00>どこのサンプルにもマニュアルにも上の通りにかいてありますが、
いったい、どこのサンプルやマニュアルを見たんだい?
おぢさんがひとつ、いいことを教えよう。
google 「perl O_RDONLY」
パソコンを買ったら、まず最初に google を覚えよう。
0539537
2008/11/24(月) 19:46:17そのキーワードで何度もぐぐったんですが
ttp://perldoc.jp/docs/modules/CGI-Session-3.11/Tutorial.pod
ttp://perldoc.jp/docs/perl/5.8.4/perlfunc.pod
こんなんや、他の個人ブログやチュートリアルサイトでも
sysopen(HANDLE, path, O_RDONLY); の例が出てくるんですよね
0540537
2008/11/24(月) 19:49:25改めてよく読んだらperldoc.jpに「標準モジュール Fcntl 経由で」って書いてありましたね
use Fcntlで解決しました
>>537 ありがとうございました
0541デフォルトの名無しさん
2008/11/24(月) 21:43:423文字の辞書ファイルは既にあって
3×3の真ん中には「か」という文字列が入っています。
このとき、3×3のクロスワードを作成するにはどうすればよいでしょうか。
0542デフォルトの名無しさん
2008/11/24(月) 21:55:330543デフォルトの名無しさん
2008/11/24(月) 21:57:310544デフォルトの名無しさん
2008/11/24(月) 22:06:300545デフォルトの名無しさん
2008/11/24(月) 23:26:48宿題をやる仕事を貧しい人達から奪うほど情が無いわけではありません
0546デフォルトの名無しさん
2008/11/25(火) 00:33:230547デフォルトの名無しさん
2008/11/25(火) 01:34:49上手い事いじらせてくれるモジュールってあったっけ?
Net::POP3〜MIME::Parserなら分かるんだが
標準入力しか触れないの扱わんとならんorz
テキストをチマチマと拾ってくしかないのか・・・?
0548デフォルトの名無しさん
2008/11/25(火) 02:15:470549デフォルトの名無しさん
2008/11/25(火) 05:36:06WWW::Mechanizeはよく知らないんだけど
$res->decoded_content(charset => 'none');
この辺りヒントになるかも
0550532
2008/11/25(火) 13:39:13おかげでCPANコマンドでも
Transfer truncated: only 0 out of 149396 bytes received
が出て死んでしまう。
ググっても他に同じような人出てこないし何いじってこうなったんだろう。。
0551535
2008/11/25(火) 13:39:41レスありがとうございます。
確かに、LWP::UserAgentからは、$res->decoded_content(charset=>'none')で
decodeされないcontentsが返って来るのを確認しました。
しかしながら、Mechanize.pm内では、このdecoded_contentに引数を渡す方法がなく、
またソース内のコメントに、
"Do we need to expose the options there?"
みたいなことが書いてありますので、現状では必ずdecoded_content()が呼ばれてしまうみたいです。
そのため、リクエストのレスポンスヘッダやページ内の<meta>タグに、charset指定がある場合は、
それに従った Encode::decode($charset,$html) が返って来ます。
(このdecodeがコケた場合は、変換なしの元々のbyte文字列が返ってきます)
http://code.google.com/p/www-mechanize/issues/list に要望でも出したら対応してくるのかな。
0552デフォルトの名無しさん
2008/11/25(火) 14:22:150553デフォルトの名無しさん
2008/11/25(火) 17:05:16ああ、なるほど。
deflate対応と文字コード変換がセットになってるのがややこしいんですよね。
decoded_content自体に罪は無いけど世の中のページはstrictじゃないページも沢山あるので
デフォルトオフか最低でも設定でオフに(WWW::Mechanizeから)出来るように考慮されてるべきだと思います。
>"Do we need to expose the options there?"
もちろん! というか主要な部分の挙動変えるなよって感じですが。
こういうPHP的なハマり方は耐えられません。
0554デフォルトの名無しさん
2008/11/27(木) 02:04:29WWW::Mechanizeなんてサブクラス化して使うのが当たり前だから
サブクラスで好きなように自分好みのcontentメソッド再実装したらいいよ
最近Perl使ってないので的外れなこといってるかもしれないけど
少し前まではMechanizeはそういう使い方が当たり前だった
生のWWW::Mechanizeを使うという考えを発想転換したら?
0555535
2008/11/27(木) 18:19:54その発想は..(ry
でも確かに、元ページのcharsetが既知ならば、それもありかもです。
>>553
そうなんです。decompress絡みとcharset変換が同じメソッド内で
同時に処理されてるのがなんだかなあと言う気もします。
まあ同意も得られたことですので、>>551のレポートフォームに
要望でも出そうかと思ってるんですが、ascii文字主体の言語圏の人々に
いかにしてこの思いを伝えようかと苦慮しているところです。
(その前に、英語も全然得意でないので、結構ビビッているんですが)
0556535
2008/11/27(木) 18:22:05>WWW::Mechanizeなんてサブクラス化して使うのが当たり前だから
うーん、そんなもんなのですか?
自分はあんまり継承とかサブクラス化を使わないので、こちらこそ的外れな
意見かもしれませんが、私の個人的な認識(印象?)では、クラスを継承したり
サブクラス化するってことは、そのベースクラスの機能を最大限利用しつつ、
それプラス自分なりのメンバ(?)やメソッドを追加したり加工したり
するために使うものかと思うのです。
(もしくは、イベント駆動型のmoduleにハンドラを追加する時など)
ひょっとして>>536,551での書き方か悪かったのかもしれませんが、
今私が不便だと感じているのは、$mech->contentの動作自体ではなく、
$mech->get()した時点で、そこから連鎖的に内部のメソッドが実行され、
linkやformなどの$mech絡みのオブジェクトが、自動でutf8フラグ付に
decodeされてしまったものがセットされる、とういうもです。
で、これを抑制したい、回避できないか、と。
0557535
2008/11/27(木) 18:22:37確かに仰るとおり、気に入らない動作や挙動の関数なら、自前の関数でも
書いて上書きでもしてしまえっ、という考えは自分にもありますので、
どれを上書きすべきかと探索し、decoded_content()に行き着きました。
そこで>>536の一行を追加し、とりあえずその場しのぎをしたんですが、
他の制御方法(mechの外からメソッドや、オプションを渡すなどで)
をご存知の方がおられないかと思い、書き込みさせて頂きました。
ちなみに今回の例を、クラスメソッドを再定義して対処するとなると、
_update_page()と言う事になりますが、このメソッド全体をコピペして、
対象の一行だけ削除なりコメントアウトなりすれば目的は達成できますが、
ベースとなるクラスメソッドを再利用しないで一から再定義するような
やり方が、mech使いの方には一般的なのでしょうか。
(自分的には、この_update_pageに伴って生成されるlinkやformオブジェクト
は大変重宝しており、出来ればそのまま利用したいです。ですが今回の場合、
元の動作の一部をスキップするのが目的のため、$self->SUPER::(base_method)
が利用できないので、あまり継承する意味が無いような気がするのですが)
長文、連投になってしまい、どうもすいません。
0558デフォルトの名無しさん
2008/11/27(木) 19:13:28バージョンを調べたら1.9916となっていました。
この番号はどう読めばいいんでしょうか。
バージョン1にパッチ9916があてられている・・・のかな?
自宅の制作環境(Win)にも近いバージョンのものを入れたいのですが
そのものズバリは見つかってなくて、どう選んだものか迷っています。
アドバイスよろしくお願いします。
0559デフォルトの名無しさん
2008/11/28(金) 01:21:41失礼
content()はアクセサーだからget()で内部メソッドを辿る必要があったわ
で、問題はもう自分でも解決してるみたいだけど、
_update_page()内のdecoded_content()の呼び出し
ここの引数リストが空なので、メンバ変数なりクラス変数なりで渡すように
サブクラスで再定義するといい
>ベースとなるクラスメソッドを再利用しないで一から再定義するような
>やり方が、mech使いの方には一般的なのでしょうか。
別にサブクラスじゃなくてもいいけど、サブクラスに定義した方が再利用性が高い
コンパイル時に確定するので、順番とか気にしなくていい
などのメリットがあると思われる
ていうかオブジェクトクラスはサブクラス化することに意義があるし、そのように使われる
ことを意識して書かれてることが多い
例えば、サブクラスで実装されることを意識して空のサブルーチンを置いたりする
0560デフォルトの名無しさん
2008/11/28(金) 23:28:35動画だったらffmpegあたりでしょうか?
0561デフォルトの名無しさん
2008/11/29(土) 06:54:09ファイルをアップロードしたいのですがうまくいきません。
#!/usr/bin/perl
use HTTP::DAV;
$d = new HTTP::DAV;
$url = "http://192.168.0.100/dav/";
$d->DebugLevel(3);
$d->credentials( -user=>"user_name",-pass =>"pass",
-url =>$url);
$d->open( -url=>"$url")
or die("Couldn't open $url: " .$d->message . "\n");
#処理
というソースなのですがオープンで失敗します。
>Couldn't open http://192.168.0.100/dav/: Unauthorized.
長いので一旦切ります。
0562561
2008/11/29(土) 06:55:28/tmp/perldav_debug.txtを見ると
<?xml version="1.0" encoding="utf-8"?><D:propfind xmlns:D="DAV:"><D:allprop/></D:propfind>
PROPFIND RESPONSE>>
HTTP/1.1 401 Access Denied
Connection: close
Date: Fri, 28 Nov 2008 21:18:18 GMT
Server: Microsoft-IIS/5.1
WWW-Authenticate: Basic realm="192.168.0.100"
Content-Length: 4395
Content-Type: text/html
Content-Type: text-html; charset=shift_jis
Client-Date: Fri, 28 Nov 2008 21:18:29 GMT
Client-Peer: 192.168.0.3:80
Client-Response-Num: 1
Client-Warning: Redirect loop detected (max_redirect = 7)
Title: このページを表示する権限がありません
X-Meta-ROBOTS: NOINDEX
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=ltr>
以下HTML
と返ってきてるようです。
IIS側の認証方法の設定としては基本認証のみチェック、既定のドメインと領域は空、
匿名アクセス、統合Windows認証のチェックは共に外してあります。
0563561
2008/11/29(土) 06:56:08そのときのログは
Request To 192.168.0.100
> PROPFIND /dav/ HTTP/1.1
> User-Agent: Rei.WebDAV/1.5.3
> Depth: 1
AuthorizationMethod = Basic
<HTTP/1.1 207 Multi-Status
< Transfer-Encoding: chunked
< Content-Type: text/xml
< Date: Fri, 28 Nov 2008 21:19:18 GMT
< Server: Microsoft-IIS/5.1
< [MESSAGEBODY LENGTH:9957]
こうなってます。ブラウザFirefoxから接続した場合もdavフォルダを閲覧することができます。
また、IIS側の設定を変え、匿名アクセスにチェックを入れた場合はPerlからも普通に接続できます。
ログから見るに
いろいろ調べたところHTTP::DAVからの接続が
AuthorizationMethod = Basic
になればいいような気がするのですがその書き方がわからない、という状況です。
HTTP::DAVモジュールでの基本認証(?)の設定の仕方がわからないので
LWP::UserAgentで基本認証で接続するとうまくいくのですが、
今度はPUT(アップロード)の仕方がわかりません。
最終的にはPerlでアップロードできればいいのですが、なにかいい方法ご存知でしたら
ご教授いただきたく思います。
引き続きこちらでも調べて見ます。
0564デフォルトの名無しさん
2008/11/29(土) 13:46:35困っていますので、助けてください。
以下のようなデータを持っています。
-----------------------------------
xおだ
56 80 90
xとよとみ
90 85 45
xとくがわ
90 90 100
-----------------------------------
1行目は名前のまえにxという印がついている
2行目に各教科の点数(0から100)がスペースで区切られている。
たとえば、左から国語、算数、理科
3行目は殻行
-----------------------------------
このデータから、それぞれの教科の点数による分布表をつくりたいのですが、どのように書いたらいいのか教えてください。
具体的には、
国語の100点は何人で、99点は何人で、、、、0点は何人。
同じように、算数と理科です。
どうぞよろしくお願いします。
0565デフォルトの名無しさん
2008/11/29(土) 14:03:52嫌う奴も居るから
0566デフォルトの名無しさん
2008/11/29(土) 15:22:14この場合は微妙だが、短絡的すぎないかw
そりゃ「初心者なので教えてください」は死ねって思うけど、例えば
1ヶ月くらい前にPerlの勉強を始めた初心者です。
Perl/CGIの入門書に載っている、簡単なBBSくらいは作れるようになりました。
とかなら、教える側にしても重要な情報だべ?
0567デフォルトの名無しさん
2008/11/29(土) 15:53:12も誰にもメリットのない無意味な免罪符。
0568567
2008/11/29(土) 16:08:50以下の説明を元に自分で作れないならもう諦めてくれ。
その前に--------
ファイル保存形式は変更可能なら変更したほうが読みやすい。(プログラムがな)。
perlの場合、順番に〜、とか他のプログラムで扱ってるのと同じでもいいけど、
いちいち名前つきデータにしたほうが便利になる。
無意味な空行もなくしていいならなくしたほうがいい。
----------------
1:ファイルを開いて変数に移す。
どうゆう構造で格納すればいいのかは使う人が考えてくれ。
リファレンスを使うと望みどおりに格納できる。
2:sortを使ってデータを意図したとおりに揃える。
3:出力して終了
ただし、$name{'おだ'}->[0];
みたいな形式で格納してしまった場合に特定の点数の者が何人いるかを調べるとき、
たぶんデータをループにかけて全チェックせねばならない。
そんだけの用途なら、
$marks[0]->[90] = ('name_1', 'name2'); #つまり国語90点の人全員の名前
と格納したほうが良い
0569567
2008/11/29(土) 16:11:52まちがた。
$marks[0]->[90] = ['name_1', 'name2']; #つまり国語90点の人全員の名前
こうか
どうでもいいか
0570デフォルトの名無しさん
2008/11/29(土) 16:21:14ブラウザでasxファイルをクリックしたら起動するように関連付けた
以下のようなものを作ってみました。
#!/usr/bin/perl
use strict;
use warnings;
my $mplayer = 'gmplayer';
my @media ;
while (<>) {
/=\s?\"((?:http|mms):\/\/.*(?:wmv|wsx|wma|asf|mp3|mp4))\"/;
push @media, $1 if ($1 ne '');
}
@media ? exec $mplayer, pop @media
: die "There is no streaming lines in this asx file!\n";
チェックの為にシェルからasxファイルを引数にして起動したところ、
わざとマッチする行が無いasxファイルでチェックした時には
Use of uninitialized value in string ne at ./mp_wp line 11, <> line 1.
Use of uninitialized value in string ne at ./mp_wp line 11, <> line 2.
(以下略)
There is no streaming lines in this asx file!
という風に警告を表示されてしまいました。
この警告を出さなくするにはどうしたらいいのでしょうか?
0571デフォルトの名無しさん
2008/11/29(土) 16:42:37use warnings;の一行を取っ払えば解決
0573デフォルトの名無しさん
2008/11/29(土) 17:02:050574デフォルトの名無しさん
2008/11/29(土) 17:02:50defined $1
0575デフォルトの名無しさん
2008/11/29(土) 17:03:180576デフォルトの名無しさん
2008/11/29(土) 17:08:33>Use of uninitialized value in string ne at ./mp_wp line 11, <> line 1.
ちゅうのはあれだ、$1 を ne で扱って評価しとるからで、
($1 ne '') は ($1) じゃいかんのかね。
パターンマッチからして undef 以外の 0 や '0' が来る筈ない場所だしなあ。
0577デフォルトの名無しさん
2008/11/29(土) 18:55:57勉強中なんで、腕試し。こんなもんかな?(未検証)
open (IN, "Seiseki.txt");
while(<IN>){
if (/(\d+) (\d+) (\d+)/) {
$Kokugo[$1]++;
$Sansuu[$2]++;
$Rika[$3]++;
}
}
close(IN);
print "点数 国語 算数 理科\r\n";
for(0..100){
printf("%4d %4d %4d %4d\r\n", $_, $Kokugo[$_], $Sansuu[$_], $Rika[$_]);
}
0578570
2008/11/29(土) 19:06:42ご教示ありがとうございます。
色々やり方があるんですね。if文の()内を(defined($1))にしたら警告が消えました。
0579デフォルトの名無しさん
2008/11/29(土) 20:53:53勉強中の自分も作ってみた。
my @subjects = qw(国語 算数 理科);
my %names_of;
open my $in, "seiseki.txt" or die "can't open : $!";
while (<$in>) {
if ( /^x(.+)/ ) {
chomp(my @marks = split / /, <$in>);
for (0..$#subjects) {
push @{$names_of{$subjects[$_]}{$marks[$_]}}, $1;
}
}
}
close $in;
for my $subject (@subjects) {
print "≪$subject≫\n";
for my $mark ( sort {$a<=>$b} keys %{$names_of{$subject}} ) {
printf "%3d : %3d人\n", $mark, scalar @{$names_of{$subject}{$mark}};
}
}
0580デフォルトの名無しさん
2008/11/30(日) 00:12:060581デフォルトの名無しさん
2008/11/30(日) 13:03:38perl henkan.pl page1.html > mypage1.html
じゃなかったら
open ( IN , "page1.html" ) or die;
open ( OUT , ">mypage1.html" );
while( <IN> ){
s/こぬにちは/こんにちは/;
print OUT;
}
close(OUT);
close(IN);
で出来るんですけど、フォルダにhtmlファイルが60個もあるので
まとめてやりたいのですが、
My_folder---page1.html,page2.html ………page60.html
の全部に一括して処理するにはどう書けばよいでしようか
0582デフォルトの名無しさん
2008/11/30(日) 13:07:12open IN, $_ ;
# 略
close IN ;
}
0583デフォルトの名無しさん
2008/11/30(日) 13:12:18open IN, $_ ;
while( <IN> ){
s/こぬにちは/こんにちは/;
print $
}
close(IN);
こうでしょうか?
済みません 馬鹿なんで 略無しで書いてくれると嬉しいです
0584デフォルトの名無しさん
2008/11/30(日) 13:24:41system("perl henkan.pl page$_.html > mypage$_.html") for(1..60);
0585582
2008/11/30(日) 13:28:24後、「初心者スレ」てーのが WebProg にあるからそっち逝ってくんね?
「誘導してください」なんて言ったら切れるぞ?
0586デフォルトの名無しさん
2008/11/30(日) 13:32:23コマンドプロンプトのところで
henkan.pl page1.html > mypage1.html
のかわりに
system("perl henkan.pl page$_.html > mypage$_.html") for(1..60);
と書いてリターンでしょうか?
すみません バカで。
0587デフォルトの名無しさん
2008/11/30(日) 14:26:341. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする。
6.感謝しない・・・教えてもらって当たり前。事がすんだらさようなら。
7.逆切れする・・・自分の思うようにならないと逆切れする。
0588デフォルトの名無しさん
2008/11/30(日) 14:45:12henkan60.plとかの名前で上の1行を保存
perl henkan60,pl
で、実行。
試してないんで、うまくいかなくてもかんべんな。
0589デフォルトの名無しさん
2008/11/30(日) 14:57:09HTTP::Requestで画像ファイル(gif)を取得して、サーバに保存したいのですが、
$response->content()をそのまま保存しても画像になりません。
コード
my $req = new HTTP::Request("GET",$url);
local $response = $ua->request($req);
print "Content-type: text/html\n\n";
print $response->code();
print $response->message();
print $response->content();
open OUT,">> ./maptest.gif";
print OUT $response->content();
close OUT;
環境はwindowsXP perl v5.10.0 Apache2.2です
誘導でもかまいませんので、ヒントをください。
0590588
2008/11/30(日) 15:02:02for(1..60){
my $n = $_;
open ( IN , "page$n.html" ) or die;
open ( OUT , ">mypage$n.html" );
while( <IN> ){
s/こぬにちは/こんにちは/;
print OUT;
}
close(OUT);
close(IN);
}
0591デフォルトの名無しさん
2008/11/30(日) 15:10:35Windows なら
binmode OUT;
で成功するかも
0592デフォルトの名無しさん
2008/11/30(日) 15:13:33早速の回答ありがとうございました。
書き込みの部分を
open OUT,"> ./maptest.gif";
binmode OUT,":raw";
print OUT $response->content();
close OUT;
として、教えていただいた、binmode を付けることで解決しました。
ありがとうございました。
0593581
2008/11/30(日) 16:10:290594デフォルトの名無しさん
2008/12/02(火) 18:40:44と
my $q = CGI->new();
ではどっちがカッコイイ書き方なんでしょうか?
0595デフォルトの名無しさん
2008/12/02(火) 21:12:20間接オブジェクト記法にはトラップがあるのが明記されてる
が故に CGI->new() の方が良いとされる。
が、現実では頻繁にコンストラクタを呼ぶ時にだけ
間接オブジェクト記法は使われている。
つーことで、new の時はどっちでもいいじゃね?method 呼ぶ時に
間接オブジェクト記法したら「変態さんがいる!」って言われるかも
しれんけどさ。
0597デフォルトの名無しさん
2008/12/02(火) 21:20:580598デフォルトの名無しさん
2008/12/02(火) 21:34:110599デフォルトの名無しさん
2008/12/02(火) 22:21:54print Foo->new->get ; # 直接ならあっさり
# 間接が一個でも混ると
#print get new Foo ; # ダメ
#print get { new Foo } ; # ダメ
print STDOUT get { new Foo } ;
print STDOUT get { Foo->new } ;
print do{ new Foo }->get ;
0600デフォルトの名無しさん
2008/12/02(火) 22:24:050601デフォルトの名無しさん
2008/12/02(火) 23:34:030602デフォルトの名無しさん
2008/12/03(水) 07:46:58「後方互換」てーのは語弊がある書き方だな、、と自己レス
perlobj の "Indirect Object Syntax" の項に説明がある。
0603デフォルトの名無しさん
2008/12/03(水) 12:49:12なんなんですか?
0604デフォルトの名無しさん
2008/12/03(水) 13:26:44http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq7.html#what_s_the_difference_between_calling_a_function_as__foo_and_foo__
http://perldoc.jp/docs/perl/5.10.0/perlsub.pod
0605デフォルトの名無しさん
2008/12/03(水) 13:54:41ありがとうございました。
よくわかりませんでしたが・・・。付けるに超したことはないのかな。
0606デフォルトの名無しさん
2008/12/03(水) 15:36:25組込み関数を全て覚えてて関数名ダブらない自信があるんなら付けてなくてもいいけど、
それまでは付けた方が良いってリャマの人が言ってた!
アンパーサンドなしじゃ関数名がダブったら組込み関数の方を呼びに行っちゃうからね。
0607デフォルトの名無しさん
2008/12/03(水) 17:05:47(サブルーチンのリファレンスが欲しい時以外)
0608デフォルトの名無しさん
2008/12/03(水) 17:33:41組み込み関数とだぶった名前つけたら読みにくくなるだけじゃないか。
あと、サブルーチン呼び出しの&の有無は完全に等価ではなくて、プロトタイプ
まわりや引数を省略したときの振る舞いなんかが違うので注意な。
sub f(\@) {
my($x) = @_;
print join(",", @$x), "\n";
}
@array = (1, 2, 3);
f(@array); # 1,2,3
&f(@array); # 空文字列
sub g {
my(@x) = @_;
print join(",", @x), "\n";
}
sub g1 {g;}
sub g2 {&g;}
g1(1,2,3); # 空文字列
g2(1,2,3); # 1,2,3
0609デフォルトの名無しさん
2008/12/03(水) 17:43:06Perl初心者は慣れるまでは付けるようにしておけ、
という事だよリャマ本
0610デフォルトの名無しさん
2008/12/03(水) 18:52:120611デフォルトの名無しさん
2008/12/03(水) 21:10:020612デフォルトの名無しさん
2008/12/03(水) 22:10:49意識して書かない限りやらないだろ・・・
0613デフォルトの名無しさん
2008/12/04(木) 12:16:49> sub f(\@) {
> my($x) = @_;
> print join(",", @$x), "\n";
> }
>
> @array = (1, 2, 3);
> &f(@array); # 空文字列
この結果、ひどいな。。。
いや、昔の perl だと普通か。。。
0614デフォルトの名無しさん
2008/12/04(木) 12:40:56プロトタイプ指定は「組込関数のように振る舞える」のが肝なので、
わざわざ & を付けて区別するのは何を意図してるの?って感じだ。
ヘンな言葉遣いをすればヘンに解釈されるってだけじゃん。
0615デフォルトの名無しさん
2008/12/04(木) 14:10:34初心者が
「慣れないうちは&をつけとこっと」
って思って勉強が進む。そのうち関数プロトタイプのことを知り、試す。
「あれ?」
っていうストーリー。
0616デフォルトの名無しさん
2008/12/04(木) 16:17:280617デフォルトの名無しさん
2008/12/04(木) 16:19:210618デフォルトの名無しさん
2008/12/04(木) 17:02:44するとないって言われるんだが・・俺だけ??
情報求むm(_ _)m
0619デフォルトの名無しさん
2008/12/04(木) 18:12:16進む中での出来事なら、峠の上り下りもみんな本当の幸いに近づく一歩ずつですから。
0620デフォルトの名無しさん
2008/12/04(木) 18:33:06「DBD-mysql PPM リポジトリ」でググッて好きなページを参照して。
0621デフォルトの名無しさん
2008/12/04(木) 21:58:48これ以上短くすることは可能ですか?
print$_%2?"$_ ":()for 1..99
0622デフォルトの名無しさん
2008/12/04(木) 22:08:380623デフォルトの名無しさん
2008/12/04(木) 22:22:240624621
2008/12/04(木) 22:46:56即レスありがとうございます
なるほど!!
でもそれだと半角スペースがないですよね?
できれば半角スペースは入れたかったんですけど…
>>623
ありがとうございます
普通に足していく方法ですか
確かに短くなりますねw
うまく説明できないんですけど演算を上手くつかって短くしたいんですよね
説明不足ですみませんでした
0625デフォルトの名無しさん
2008/12/04(木) 23:03:570626デフォルトの名無しさん
2008/12/04(木) 23:59:40ありがとうございますm(_ _)m
0627621
2008/12/05(金) 00:59:21ありがとうございます
偽の場合の式をうまく使ってますね
何か書かないといけないから空のリストを置いてたんですけど
これだと無駄がない感じになりますね
0628デフォルトの名無しさん
2008/12/05(金) 02:11:140629デフォルトの名無しさん
2008/12/05(金) 02:14:040630デフォルトの名無しさん
2008/12/05(金) 02:16:48$,=" ";print grep{$_&1}0..99
短くないな…
0631デフォルトの名無しさん
2008/12/06(土) 20:39:27短くするのは難しいな
print(map{$_%2?$_:" "}1..99);
0632621
2008/12/06(土) 22:48:51mapは最初使ってましたけどforのほうが短くできることに気付いてforにしました
あと一行だけの場合はセミコロンなしでも動くので省いてますw
0633デフォルトの名無しさん
2008/12/06(土) 22:54:53↑くらい狂ったコードとか書いてくんなきゃ突っ込み所も何も無い。
コードゴルフで遊ぶなら最低FizzBuzzくらいのお題にしてくんなきゃ、やる気も出ない。
0634デフォルトの名無しさん
2008/12/06(土) 22:56:32そういうときは、やらないといいです!
0635デフォルトの名無しさん
2008/12/06(土) 22:58:48ま、そうだねw
本当のレスは「食傷気味なんだよ空気読め!」だったんだけど
それじゃキツイかなと思って適当に書いただけだから。
0636デフォルトの名無しさん
2008/12/06(土) 23:01:100637デフォルトの名無しさん
2008/12/06(土) 23:08:37書き間違えを修正するのに、
ファイル名に統一性がない場合は
どうすればいいですか?
日本語のファイルも英語のファイルもあります。
メモ.txt メモ1.txt soccer_news.txt
とかいろいろあります。
メモ.txt → メモ_perl.txt
とか、全てに_perlをつけて出力したいです。
↓こんな感じのを opendir とかで
挟むのかなとまでは調べましたが
そのあとが解りません。
open ( IN , "メモ.txt" ) or die;
open ( OUT , ">メモ_perl.txtl" );
while( <IN> ){
s/にちゃんねる/2ch/g;
print OUT;
}
close(OUT);
close(IN);
0638デフォルトの名無しさん
2008/12/06(土) 23:20:00>>581からの流れを読めば?
0639デフォルトの名無しさん
2008/12/06(土) 23:39:19日本語の文字置き換えが少し面倒だな
while(<*.txt>)でテキストファイル名を読み出してopen
ファイル名変えるのはrename使えば出来る
0640デフォルトの名無しさん
2008/12/06(土) 23:40:56use File::Slurpして
@files = read_dir(ディレクトリ)して
条件に合うファイル名に対し、renameすればいい。
0641デフォルトの名無しさん
2008/12/06(土) 23:56:05俺も勉強の為にちょっとやってみたよ
とりあえず動くとは思うけど良いソースかどうかは分からん
while(<*.txt>){
my $old_name = $_;
my $new_name = $_;
my @text;
open IN,"$_" or die "$!";
@text = <IN>;
close IN;
open OUT,">$_" or die "$!";
for(@text){
s/にちゃんねる/2ch/g;
}
print OUT @text;
close OUT;
$new_name =~ s/([\d\D]+)\.txt/$1_perl.txt/;
rename $old_name,$new_name;
}
0642デフォルトの名無しさん
2008/12/07(日) 12:54:11やってみたら、元のファイルが無くなってました
元のファイルも新ファイルも両方残す設定にはどうすればいいでしょう?
0643641
2008/12/07(日) 13:02:53>元のファイルも新ファイルも両方残す設定にはどうすればいいでしょう?
無くなったというか元のファイルの名前を変えただけなんだけど
複製したいなら
ues File::Copy;
も追加してrenameだったところをcopyに変えればいいよ
0644デフォルトの名無しさん
2008/12/07(日) 13:30:43笑
0645デフォルトの名無しさん
2008/12/07(日) 15:28:28ありがとうございました できました。
0646デフォルトの名無しさん
2008/12/07(日) 15:31:040648641
2008/12/07(日) 16:06:33while(<*.txt>){
my $old_name = $_;
my $new_name = $_;
my @text;
$new_name =~ s/([\d\D]+)\.txt/$1_perl.txt/;
open IN,"$old_name" or die "$!";
@text = <IN>;
close IN;
open OUT,">$new_name" or die "$!";
for(@text){
s/にちゃんねる/2ch/g;
}
print OUT @text;
close OUT;
}
ちなみにuse File::Copy;は必要ないです
0649デフォルトの名無しさん
2008/12/07(日) 22:29:47あと普通の人は1ライナーで処理するよね、これ
0650デフォルトの名無しさん
2008/12/07(日) 23:04:53普通は
$ perl -i.bak -ple 's/foo/bar/g' *.txt
とかする
0651デフォルトの名無しさん
2008/12/08(月) 01:28:22use DBI;
my $db = DBI->connect("DBI:mysql:unkodb:unkohost", $user, $pass) or do{warn DBI::errstr;exit 0};
$db->do('SET NAMES UTF8');
my $sth = $db->prepare("SELECT name,title FROM unkotable WHERE id=?");
$sth->execute($id) or die DBI::errstr;
$sth->bind_columns(undef, \(my($name,$title))) or die DBI::errstr;
my $rc = $sth->fetch();
utf8::decode($name); #これ
utf8::decode($title); #これ
みたいなコードなんですけど、
utf8::decode($ほげ) をいちいちやらずに済む方法ってありますか?
ついうっかりミスっちまいそうなので。
0652デフォルトの名無しさん
2008/12/08(月) 02:47:14ちゃんとdocumentくらい読もうぜ。
http://search.cpan.org/dist/DBD-mysql-4.010/lib/DBD/mysql.pm
0653デフォルトの名無しさん
2008/12/08(月) 03:28:21ありがとうございます。やっぱ無理でしたか。あきらめます。
0654デフォルトの名無しさん
2008/12/08(月) 09:35:04適当にラップするサブルーチンをつくったら?
0655デフォルトの名無しさん
2008/12/08(月) 09:47:53具体的に良い例などが載っているサイトとかありませんか
0656デフォルトの名無しさん
2008/12/08(月) 12:17:520657デフォルトの名無しさん
2008/12/08(月) 13:00:480658デフォルトの名無しさん
2008/12/08(月) 13:13:36こんな感じ?
my @a = <STDIN>;
if($a[0] == ""){
print "何も入力されていない";
}elsif($a[0] == "0"){
print "0が入力されている";
}
0659デフォルトの名無しさん
2008/12/08(月) 13:58:360660デフォルトの名無しさん
2008/12/08(月) 16:45:18だから、ちゃんと読もうぜ! って(w)
DBD-mysqlのversionいくつか知らないけど、4.001以降なら、
$dbh->{mysql_enable_utf8} = 1;
で、$sth->fetchrow() の戻り値にutf8フラグ付きの文字列を取得でける。
0661デフォルトの名無しさん
2008/12/08(月) 19:40:05自称回答者でも初心者スレにすら値しない。
質問者共々、みんな纏めてこっち行け。
くだすれPerl(超初心者用)2
ttp://pc11.2ch.net/test/read.cgi/php/1204488452/
0662デフォルトの名無しさん
2008/12/08(月) 19:48:21これのことか。これはひどいな。
0663デフォルトの名無しさん
2008/12/08(月) 19:55:14ありがとうございます。2年前に書いたコードをメンテナンスしてるのですが、
mysql_enable_utf8 については、2年前にさんざん調べて、
結局ガセネタだとわかったので、今回もdocumentを読めと言われて
「またmysql_enable_utf8か・・・それ、もうとっくに試した。」とハヤトチリしてしまいました。
DBD-mysql のバージョン4.005が出ているのでアップデートしたら、すんなりOKでした。
0664デフォルトの名無しさん
2008/12/08(月) 20:14:30「二年前にさんざん調べた」とかは瑣末な事だからどーでも良いけど
( mysql_enable_utf8 は 4.0XX 系から)
cpan の View Bugs で
- バグかどうか。
- それが解消されたかどうか。
くらいは把握したら?
0665デフォルトの名無しさん
2008/12/08(月) 20:53:58for ($n = 0; $n < 1; $n += 0.01) {
$_ = $n * 100;
$i = int($_);
if ($_ != $i) {
print "int($_) != $i\n";
}
}
これって何も出力されないって思ってたんだけど、
6,7,11 ...
といっぱい出力されるんだけど何でだろう?
0666デフォルトの名無しさん
2008/12/08(月) 21:29:04perl -le ' print 7 == ( 0.05 +0.02) * 100'
これは1が帰ってこない。
0667デフォルトの名無しさん
2008/12/08(月) 21:46:48バーカ、リリースされたのは2007年7月だよ。しね
0668デフォルトの名無しさん
2008/12/08(月) 22:22:22ttp://search.cpan.org/~capttofu/DBD-mysql-4.010/ # Other Releses
ttp://osdir.com/ml/lang.perl.modules.dbi.sybase.devel/2006-12/index.html#00020
ttp://www.archivum.info/perl.dbi.dev/2007-06/msg00006.html
0669デフォルトの名無しさん
2008/12/08(月) 23:03:030670デフォルトの名無しさん
2008/12/09(火) 00:24:36definedでよくない?
0671デフォルトの名無しさん
2008/12/09(火) 01:44:12#!/usr/bin/perl -w
use strict;
for (0, '0', '', undef, '1E2', ' 3a', '.4 ') {
my $defined = defined $_ ? 'defind' : 'undef';
my $len = length $_;
my $num = $_ + 0;
print "[$_] is $defined, length $len, num $num\n";
}
__END__
[0] is defind, length 1, num 0
[0] is defind, length 1, num 0
Argument "" isn't numeric in addition (+) at test.p line 6.
[] is defind, length 0, num 0
Use of uninitialized value $_ in length at test.p line 5.
Use of uninitialized value $_ in addition (+) at test.p line 6.
Use of uninitialized value $_ in concatenation (.) or string at test.p line 7.
[] is undef, length 0, num 0
[1E2] is defind, length 3, num 100
Argument " 3a" isn't numeric in addition (+) at test.p line 6.
[ 3a] is defind, length 3, num 3
[.4 ] is defind, length 3, num 0.4
0672デフォルトの名無しさん
2008/12/09(火) 03:32:42ttp://mat.blogdns.com/up/img/mat_008.jpg
ttp://mat.blogdns.com/up/img/mat_009.jpg
ttp://mat.blogdns.com/up/img/mat_010.jpg
ttp://mat.blogdns.com/up/img/mat_011.jpg
ttp://mat.blogdns.com/up/img/mat_012.jpg
ttp://mat.blogdns.com/up/img/mat_013.jpg
ttp://mat.blogdns.com/up/img/mat_014.jpg
0673デフォルトの名無しさん
2008/12/09(火) 05:03:10http://perl-users.jp/modern_introduction_perl/
ここもいくら待っても目次しかないんだけど
0674デフォルトの名無しさん
2008/12/09(火) 06:06:55そこはね、おまえが書くために用意されているんだよ。
0675デフォルトの名無しさん
2008/12/09(火) 11:32:04この辺からたぐってみるといいかもね。
http://b.hatena.ne.jp/entrylist?url=http://perl-users.jp/
0676デフォルトの名無しさん
2008/12/09(火) 13:59:31他のメソッドから呼び出す方法はないでしょうか?
ローカルの連想配列が利用したいという意味事です
sub new{
my($self) = shift;
my(%allvalue) = ("one", 1, "two", 2, "three", 3);
my($hash) = {
hid => $hid,
allvalue => %allvalue ←連想配列の受け渡しが出来ていない???
};
bless $hash, $self;
}
sub read{
my($self) = shift;
my(%allvalue) = $self->{allvalue}; ←%allvalue には先頭の値しか残っていない
}
0677676
2008/12/09(火) 14:42:05自己解決しました
sub new{
my($self) = shift;
my(%allvalue) = ("one", 1, "two", 2, "three", 3);
my($hash) = {
hid => $hid,
allvalue => \%allvalue ←参照渡しして
};
bless $hash, $self;
}
sub read{
my($self) = shift;
my(%allvalue) = %{$self->{allvalue}}; ←連想配列で型キャスト
}
0678デフォルトの名無しさん
2008/12/11(木) 12:44:47�A特定の文字列があったら、その行のそれ以降の文字を出力ファイルに出力
�B�Aをしたら次の行の大文字を出力ファイルに出力
�B特定の文字列があったら、その行のそれ以降の文字を出力ファイルに出力
�C�Bをしたら次の行の大文字を出力ファイルに出力
どうすればいいか教えて下さい
0679デフォルトの名無しさん
2008/12/11(木) 12:50:30�@入力ファイルを読みこむ
�A特定の文字列があったら、その行のそれ以降の文字を出力ファイルに出力
�B�Aをしたら次の行の大文字を出力ファイルに出力
�C特定の文字列(�Aとは別の)があったら、その行のそれ以降の文字を出力ファイルに出力
�D�Cをしたら次の行の大文字を出力ファイルに出力
�Eさらに何行か読み込んで、特定の文字列(�A�Cとは別の)があったら、その行のそれ以降の文字を出力ファイルに出力
お願いします
0680デフォルトの名無しさん
2008/12/11(木) 14:27:260681デフォルトの名無しさん
2008/12/11(木) 14:30:37確かにそれしか答えようが無い…ッ
0682デフォルトの名無しさん
2008/12/11(木) 17:01:02○宿題をやって下さい
0683デフォルトの名無しさん
2008/12/11(木) 17:44:47宿題じゃないです
STAのタイミングレポートからStartpoint、送り手側、Endpoint、受け側、slackの文字列を抜き出して編集したいだけです
0684デフォルトの名無しさん
2008/12/11(木) 18:20:270685デフォルトの名無しさん
2008/12/11(木) 19:07:19自分がやりたいことをそこまで細分化できるなら、
もーちょっと細かく分けてみるといいんでないかい。
そーすると、まさに>680の言う「まんまやれ」になる。
0686デフォルトの名無しさん
2008/12/11(木) 20:45:18プログラミング中に机の前に張っておきたい。
0687デフォルトの名無しさん
2008/12/11(木) 20:59:53じゃあ、勉強中の自分がしてみます。
my @key_words = qw(foo bar buz);
my $input_file = "input.txt";
my $output_file = "output.txt";
open my $in, $input_file or die "can't open : $!";
open my $out, q{>}, $output_file or die "can't open : $!";
for my $key_word (@key_words) {
while (<$in>) {
if (/$key_word(.*)/s) {
print $out $1;
unless ( $key_word eq $key_words[-1] ) {
(my $line = <$in>) =~ s/[^A-Z\n]//g;
print $out $line;
}
last;
}
}
}
close $in;
close $out;
0688デフォルトの名無しさん
2008/12/11(木) 22:23:39やることは何とかわかってきたけど、やらないといけないことが多すぎるし、自分にわかりやすいサイトがないから勉強しにくいし、具体的にどう記述すればいいのかがよくわからないんだorz
入力ファイルを全行読み込んで出力とか、文字列の中から特定の文字を抜き出すとかのサンプルプログラムはあるけど組み合わせたら途端にわからなくなる・・・
その上入力ファイルも大量にあるし、階層も2つある
階層移動してsetupやholdなどの名前を含むファイルを指定して開く必要があるからめんどくさすぎる・・orz
>>687
勉強中でそこまで書けるのかよ・・・
すげぇww何書いてるのかさっぱりわからないwww
0689デフォルトの名無しさん
2008/12/11(木) 22:32:15ほんとに勉強したの?
本屋さんに行って本を買うとか、したの?
0690デフォルトの名無しさん
2008/12/11(木) 23:03:361から勉強しながら解いてるんだぜ
本は買うお金がもったいないし、家に帰ってまで勉強できるほど気持ちにゆとりがない
0691デフォルトの名無しさん
2008/12/11(木) 23:56:56英語読めるんだったらダウンロードでもいいけど。
0692デフォルトの名無しさん
2008/12/12(金) 00:23:59プログラミングの本は高いけどネットよりずっと効率的
0693デフォルトの名無しさん
2008/12/12(金) 01:11:31つまり、勉強しないで楽したいってことですね。
0694デフォルトの名無しさん
2008/12/12(金) 03:27:11あとは、適当にperldocすれ。
0695デフォルトの名無しさん
2008/12/12(金) 07:45:01やる気がないならやるなよ。
誰のためにもならないことして楽しい?
0696デフォルトの名無しさん
2008/12/12(金) 10:05:45Hollow World
ファイルの読み書き
パターンマッチ
こんなもんじゃね?
0697デフォルトの名無しさん
2008/12/12(金) 12:26:440698デフォルトの名無しさん
2008/12/12(金) 13:02:050699デフォルトの名無しさん
2008/12/12(金) 14:40:14PythonかRubyにしなさい。
0700デフォルトの名無しさん
2008/12/12(金) 16:38:040701デフォルトの名無しさん
2008/12/12(金) 20:08:35日本生まれだし。sperlの方が上?
0702デフォルトの名無しさん
2008/12/12(金) 20:19:29どっちみちPerlじゃWindowsでUnicodeなファイルとか開けねえし
0703デフォルトの名無しさん
2008/12/12(金) 22:42:380704デフォルトの名無しさん
2008/12/12(金) 23:11:480705デフォルトの名無しさん
2008/12/12(金) 23:21:12ん?Latin-1なアルファベット類だのハートマークだの含んだ
ファイル名のファイルだぞ?
0706デフォルトの名無しさん
2008/12/13(土) 00:22:18それとも5.10で改善されたのか?
0707デフォルトの名無しさん
2008/12/13(土) 00:38:50お教え下さい。
入力ファイルから、数字の書いてある部分を抽出し、
ある閾値以上か、それより小さいかで振り分けて
処理をしたいと思っているのですが、上手くいきませんでした。
で、閾値-抽出した結果を表示してみた所、
計算結果の絶対値(マイナスになるはずの結果もプラス表示)
・・・となっていました。
抽出した結果に、何か加工しないといけないのでしょうか?
ご教示していただけたら幸いです。
0708デフォルトの名無しさん
2008/12/13(土) 00:49:010709デフォルトの名無しさん
2008/12/13(土) 00:51:08昔は開けた。いまは開けない。
0710デフォルトの名無しさん
2008/12/13(土) 01:22:36>計算結果の絶対値(マイナスになるはずの結果もプラス表示)
数字だけ拾って、「−」符号を拾ってないと予想してみた。
0711デフォルトの名無しさん
2008/12/13(土) 01:51:19適当にリネームすりゃ開けんじゃねぇの?
0712デフォルトの名無しさん
2008/12/13(土) 02:04:020713デフォルトの名無しさん
2008/12/13(土) 02:48:06ソートをするプログラムを作っているんですが、ユーザーなどは値が無い
ことがあるので、ユーザーに関連付けてソートする時に
Use of uninitialized value
というwarningが出てしまいソートがうまくいきません。
どうぞご指導ご鞭撻をm(__)m
0714デフォルトの名無しさん
2008/12/13(土) 02:49:180715デフォルトの名無しさん
2008/12/13(土) 02:56:16でもですねえなるべくデータ本体をいじりたくないんで
@data = map {$_->[0]}
sort {$a->[2] <=> $b->[2]}
map {[$_, split /,/]} @data;
こんな感じでやってるんですけど、一時的に仮想的にみたいな
値の入れ方ってありますかねえ?意味わかんない質問で恐縮です。
0716デフォルトの名無しさん
2008/12/13(土) 03:16:09splitしたあと変数をスキャンして適当な値を入れておけばよいのじゃ
0717デフォルトの名無しさん
2008/12/13(土) 05:40:430718デフォルトの名無しさん
2008/12/13(土) 08:03:25A => map{ [ $_, ( split /,/ ), 0 ] }
B => sort{ ($a->[1] || 0) <=> ($b->[1] || 0) }
折角のシュワルツ変換なんだから、最初のmapで丁寧にAの様に値を代入すれば?
Bの様にして、(多段ソートの場合とかで)ソート条件毎に値を制御する方法もあるけど。
0719デフォルトの名無しさん
2008/12/13(土) 14:11:10ありがとうございます!!Bの方法で無事ソートすることが出来ました!!
そのほかのみなさんも丁寧に質問に答えていただきありがとうございました。
M(__)M
0720デフォルトの名無しさん
2008/12/13(土) 18:25:24ん? OSに英語版のWindowsとか使っているってこと?
>>4 には
# ※2.OSに渡す文字列(ファイル名,dosコマンドのオプションなど)は、
# この例のようにcp932でエンコードする必要があります。
と書いてあるけど、同じようにLatin-1にエンコードすればいいような気がするが。
0721デフォルトの名無しさん
2008/12/13(土) 18:43:49なぜ英語版のWindowsが出てくるの?
英語版だろうが日本語版だろうがWindowsのファイル名はUTF-16なんだが
0722デフォルトの名無しさん
2008/12/13(土) 18:48:310723デフォルトの名無しさん
2008/12/13(土) 18:55:14PerlはA系APIを使っているので、システムに渡すファイル名は
カレントコードページ(日本語WindowsならCP932)でエンコードされて
いなければならないんだよ
PerlはたとえUTFフラグがついている文字列であっても、必要な手当てを
「全く」行わないがな
0724デフォルトの名無しさん
2008/12/13(土) 19:23:450725デフォルトの名無しさん
2008/12/14(日) 13:34:16$a = \x82a0;
な状態で、'あ'と出力したい時は、
どう変換したらいいですか?
active perlを想定しています
0726デフォルトの名無しさん
2008/12/14(日) 17:41:28勉強中の者ですが、こんなんではなくて?
print pack("H4", (substr $$a, 1));
0727デフォルトの名無しさん
2008/12/14(日) 18:17:34'x82a0'が未定義だから、定義してやればいい。
use strict;
use warnings;
use constant x82a0 => 'あ';
$a = \x82a0;
print ${$a};
0728デフォルトの名無しさん
2008/12/14(日) 19:31:29期待通りの動作をしますが、異様に複雑です
例えば、82a0から82afまでの32バイトを出力したいとすると、
どう書くのが楽ですか
0729デフォルトの名無しさん
2008/12/14(日) 19:37:31$a = \x82a0;
0730デフォルトの名無しさん
2008/12/14(日) 19:49:01頭悪いですね
0731デフォルトの名無しさん
2008/12/14(日) 19:51:03もし本当に $a = \x82a0; としているのなら
print pack '(H2)*', unpack '@1(A2)*', $$a;
$a = '\x82a0'; なら
print pack '(H2)*', unpack '@2(A2)*', $a;
$a = "\x82a0"; なら
print substr($a, 0, 1), pack '(H2)*', unpack '@1(A2)*', $a;
$a = "\x82\xa0"; なら
print $a;
>>728
print map sprintf("\x82%c", $_), 0xA0 .. 0xAF;
http://perldoc.jp/docs/perl/5.10.0/perldata.pod
http://perldoc.jp/docs/perl/5.10.0/perlfunc.pod
http://perldoc.jp/docs/perl/5.8.8/perlpacktut.pod
0732デフォルトの名無しさん
2008/12/14(日) 23:53:58my $high_byte = 0x82;
for my $low_byte (0xa0..0xaf) {
printf "%x%x -> %s\n", $high_byte, $low_byte, chr($high_byte).chr($low_byte);
}
0733デフォルトの名無しさん
2008/12/15(月) 01:51:07print pack('n*', 0x82a0..0x82af);
0734デフォルトの名無しさん
2008/12/15(月) 02:50:090735デフォルトの名無しさん
2008/12/15(月) 20:51:20みなさんのオススメの一冊を教えて下さい。
0736デフォルトの名無しさん
2008/12/15(月) 20:55:49>>2
0737デフォルトの名無しさん
2008/12/15(月) 21:45:580738デフォルトの名無しさん
2008/12/15(月) 23:40:09変数にundefを入れる場合、以下どちらを使うべきですか。
(1)$val=undef;
(2)undef($val);
どちらも全く同じこと?違いがありましたら教えて下さい。
0739デフォルトの名無しさん
2008/12/16(火) 01:11:100740デフォルトの名無しさん
2008/12/16(火) 01:23:030741デフォルトの名無しさん
2008/12/16(火) 02:03:28http://perldoc.jp/docs/perl/5.10.0/perlfunc.pod#item_undef_EXPR_undef_undefine
「変数にundefを入れる」場面なら $val = undef; だろう。
「変数を初期化する」場面なら undef $val; だろう。
文脈に沿って選べばいいよ。
0742デフォルトの名無しさん
2008/12/16(火) 03:35:44文盲?
0743デフォルトの名無しさん
2008/12/16(火) 06:16:20Windowsがカスなだけ
0744738
2008/12/16(火) 09:08:31動きますね。
しかし、(1)は一般的ではないということでしょうか。
>>741
「変数にundefを入れる」=「変数を初期化する」
だと思うのですが違いがあるのでしょうか。
(内部的にメモリの使い方が違う等??)
0745デフォルトの名無しさん
2008/12/16(火) 09:16:47変数の値をundefに設定したいときは代入
変数の値を捨てたいときはundef
かな。後者はでかい一時文字列とか巨大データ構造への
リファレンスが入ってていらなくなったときのイメージ。
0746デフォルトの名無しさん
2008/12/16(火) 18:49:58見た目から意味の違い感じる人もいるかもしれないが、
スカラー変数に限って言えば、その二つは全く等価。
0747デフォルトの名無しさん
2008/12/16(火) 20:02:260748デフォルトの名無しさん
2008/12/16(火) 22:35:52まともにスコープ切って素直な処理書いてりゃ必要にならない。
0749デフォルトの名無しさん
2008/12/17(水) 20:38:19(1)で書かれてるね
0750デフォルトの名無しさん
2008/12/17(水) 21:29:46しかし、ログインが必要なので単純にアクセスしても期待通りのものが得られません
ログインとかクッキー周りのことをなるべく簡単に済ますには、
何を使うのがお勧めですか
0751デフォルトの名無しさん
2008/12/17(水) 21:53:04LWP
0752デフォルトの名無しさん
2008/12/17(水) 23:04:350753デフォルトの名無しさん
2008/12/17(水) 23:40:27http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq8.html#how_do_i_read_and_write_the_serial_port
http://lab.kamawada.com/techmemo/index.cgi?page=Perl の「Perlでシリアルポートからの…」
0754デフォルトの名無しさん
2008/12/18(木) 16:53:25やはりLWP以上のものはありませんか
普通にGETしたりする程度にならLWPは使えているのですが、
クッキー周りがさっぱりです
何かサンプルはありませんか?
0755デフォルトの名無しさん
2008/12/18(木) 17:06:16ttp://www.matsusaka-marm.com/info02.html
>今後も近隣の主要な病院とコンタクトをとり、今回の事故に関連した特定の事象集積がな
>いか等の情報収集を継続的に行いフォローアップすることが望まれる。
>2008年12月15日
> 専門委員会
> 委員長 藤田 某
> 精神科医
 ̄ ̄ ̄ ̄ ̄
精神科医
精神科医
精神科医
精神科医
精神科医・・・
もし何かあったら、精神科のお医者さんが診てくれるそうです。
安心ですね。
0756デフォルトの名無しさん
2008/12/18(木) 17:06:470757デフォルトの名無しさん
2008/12/18(木) 17:37:49つHTTP::Cookies
LWPに含まれてるよ。初期化さえすればあとはほとんど自動的に
やってくれる。SYNOPSISの例を見ればわかるだろ。
0758デフォルトの名無しさん
2008/12/18(木) 18:06:08(それでもかなりブラックボックス的な使い方をしてるけど)
クッキーファイルも更新されるのでクッキーのやりとりもしているように見えるのに、
ログインしてくれというメッセージが帰ってくる
そもそも、pixivのCookiesの内容を見ても、
__utma __utmv __utmz という変数しかなくて、ID等が含まれているように思えない
そのへんも含めて、pixivに特化した、これなら動くというサンプルがあると助かります
0759デフォルトの名無しさん
2008/12/18(木) 18:22:34それCookie以前にログインができてないじゃん
ログインの時にhidden属性のinputのデータもちゃんと渡してる?
0760デフォルトの名無しさん
2008/12/18(木) 18:26:21そんな都合の良いものがそうそう落ちてるんだろうかと思ってぐぐったら
ttp://memogaki.soudesune.net/PixivCooliris.html
なんてのがひっかかりましたが。
wiresharkとか使ってブラウザでうまくログインできるときの通信内容と
違いがないか地道に調べるのが正攻法だと思うけど。
0761デフォルトの名無しさん
2008/12/18(木) 18:46:02その時のクッキーの情報をそのまま送ってやれば、
騙されてくれないかなー、という目論見なんですが、
やっぱり通信内容とか調べないと駄目ですか
そのへんを全部面倒見てくれるパッケージが無いかな、というのが
最初の質問です(>>750)
0762デフォルトの名無しさん
2008/12/18(木) 18:55:06みたいなのはバラバラだから、結局調べることになるのか
0763デフォルトの名無しさん
2008/12/18(木) 19:10:40ブラウザが持ってるクッキー情報をどうやってperlから読んでるわけ?
何もしないと勝手には読んじゃくれませんよ。
0764デフォルトの名無しさん
2008/12/18(木) 19:14:09Documents and Settings\user\Cookies
のとこにある奴を
手作業で
0765デフォルトの名無しさん
2008/12/18(木) 19:20:57肝部分は、
my $res = $ua->post( "http://www.pixiv.net/index.php",
[
mode => "login",
pixiv_id => $pixivUserID,
pass => $password,
skip => 1
]);
こんな感じ
っていうか、>>760の丸コピー
0766デフォルトの名無しさん
2008/12/18(木) 22:26:480767デフォルトの名無しさん
2008/12/18(木) 22:46:26おまえがやってヒーローになれ
0768デフォルトの名無しさん
2008/12/19(金) 02:17:12これは前者が後者の省略した記述に過ぎないという事なのでしょうか?
それとも、何か動作上の違いがあるのでしょうか?
0769デフォルトの名無しさん
2008/12/19(金) 04:06:09http://perldoc.jp/docs/perl/5.10.0/perlmod.pod
use Hoge::Fuga; は Hoge/Fuga.pm を探して require するが、
Hoge/Fuga.pm に何が書かれているかまでは関知しない。
#--- ./Hoge/Fuga.pm ---
package Piyo;
sub piyo { print join 'piyo', @_ }
1;
#__END__
#--- script ---
use strict;
use Hoge::Fuga;
Piyo::piyo(1, 2, 3, 'yo');
__END__
0770デフォルトの名無しさん
2008/12/19(金) 05:35:27perlでメールの添付ファイルの処理をしようとして、
ttp://homepage3.nifty.com/hippo2000/perltips/rcvmail.htm
を参考にプログラムを書こうと思っているのですが、
上記ページのWordDecoderを使ったサンプルプログラムを実行すると、
保存されたファイル名がURLエンコードされている状態になってしまいその原因が分かりません。
実はURLエンコードされている方が扱いやすくてうれしいのですが、
原因が分からないのが気持ち悪くて…。
どなたか教えていただけないでしょうか。
動作環境はFreeBSD6.0で、Jcode, MIME-Toolsはportsでインストールしました。
別のスレで答えが頂けなかったのは、私が根本的に勘違いしているのが原因かも、とも思っています。
(ファイル名はもともとURLエンコード…パーセントエンコード?するように作られているだけ、とか。)
よろしくお願いいたします。
0771デフォルトの名無しさん
2008/12/19(金) 06:26:160772デフォルトの名無しさん
2008/12/19(金) 20:22:38質問の趣旨は、「原因が分からないのが気持ち悪い」ということだろ?
じゃぁ答えはこうだ。「気にするな」
0773デフォルトの名無しさん
2008/12/20(土) 07:15:15実にPerlerっぽい答えだw
0774デフォルトの名無しさん
2008/12/20(土) 15:19:400775デフォルトの名無しさん
2008/12/20(土) 19:14:12package Foo;
sub func { print "foo\n" }
package main;
Foo::func;
Foo->func;
0776デフォルトの名無しさん
2008/12/20(土) 19:23:28それなら動作に違いはないが、
Foo->funcは内部でFoo::func('Foo')になる。
0777デフォルトの名無しさん
2008/12/20(土) 19:24:08s/動作/結果/
だった
0778デフォルトの名無しさん
2008/12/20(土) 19:55:37なるほど
�d
0779デフォルトの名無しさん
2008/12/23(火) 18:39:12ラリー・ウオールがperl6の開発を無期限延期し、
PHPの開発に合流するという、衝撃的な発表。
0780デフォルトの名無しさん
2008/12/23(火) 18:52:18sorce
0782デフォルトの名無しさん
2008/12/23(火) 21:31:410783デフォルトの名無しさん
2008/12/23(火) 21:34:03事実ならRubyかPythonに移行決定してしまうんだが…
0784デフォルトの名無しさん
2008/12/23(火) 21:39:140785デフォルトの名無しさん
2008/12/23(火) 21:56:020786デフォルトの名無しさん
2008/12/23(火) 22:44:420787デフォルトの名無しさん
2008/12/24(水) 01:07:40記事が少ないと正常に動くんですが、
記事の量を増やしまくって出現単語の種類が増えると
茶筅が起動できなくてエラーでるんだけど。。。
ハッシュがでかくなりすぎたせいでメモリ不足が原因?
勝手にHDにでも退避してくれんのかね??
0788デフォルトの名無しさん
2008/12/24(水) 06:35:580789デフォルトの名無しさん
2008/12/24(水) 08:28:530790デフォルトの名無しさん
2008/12/24(水) 13:04:07確かに・・・
そっちでやってみるわ!
てんくす!
よいお年を!
0791デフォルトの名無しさん
2008/12/25(木) 01:22:54$fooという変数に、"bar"という文字列が含まれているか判断したいのですがどうすればいいでしょうか?
grepを使ってみたのですが、$fooの値が書き換えられてしまいます。
行いたいことは、if()の条件分岐で$fooのなかに"bar"が含まれているときと、含まれていないときで処理を変えたいです。
ですが、条件分岐後にも$fooの値を使用するので$fooの内容は変更したくありません
0792デフォルトの名無しさん
2008/12/25(木) 01:30:19if ($foo =~ /bar/) {
}
else {
}
0793デフォルトの名無しさん
2008/12/25(木) 01:32:00index
0794デフォルトの名無しさん
2008/12/25(木) 05:21:480795デフォルトの名無しさん
2008/12/25(木) 07:50:00改行またがりとかきをつけるよろし
0796デフォルトの名無しさん
2008/12/26(金) 02:03:30フォルダの中にあるテキストファイルの「拡張子を除いたファイル名」を取得したいのですが、
階層の部分まで拾ってきてしまいます。
例
my $place="/test/1234.txt"; #この例では「1234」を抽出したい
$place=~ m|/(.*?)\.txt$|; #最短マッチで/(1234).txt 括弧部分を取得
my $name=$1;
print $name;
ところが出力結果は「test/1234」となってしまいます。
正しくファイル名だけを抽出するためには、どのように記述したら良いのでしょうか。
ご存知の方、どうかよろしくお願いします。
簡易検証用コピペ
perl -e '$i="/test/1234.txt"; $i=~ m|/(.*?)\.txt$|; $j=$1; print $j;'
0797796
2008/12/26(金) 02:13:22m|/([^/]*?)\.txt$| でOKですね…ごめんなさい。
正規表現の"."は"/"に対応していないのでしょうか、よく分かりません。
0798デフォルトの名無しさん
2008/12/26(金) 04:00:05File::Spec
0799デフォルトの名無しさん
2008/12/26(金) 10:38:36if ($a){
if ($b){
if ($c){
$i='abc'; # $a $b $c 全部あれば (のつもり)
}else
{$i='ab';} # $a $b あれば (のつもり)
}else
{$i='a';}# $a あれば (のつもり)
}else
{$i='';}# $a $b $c なければ (のつもり)
0800デフォルトの名無しさん
2008/12/26(金) 11:05:33と
「$a あれば」
について考えてみるのだor説明してみるのだ
0801デフォルトの名無しさん
2008/12/26(金) 11:08:400802デフォルトの名無しさん
2008/12/26(金) 11:11:35最短マッチは「前から」調べて、一致したら(それ以上チェックせずに)、そこでおしまい。
最短一致マッチで誤解しやすいこと
http://d.hatena.ne.jp/hiratara/20081101/1225504613
> my $place="/test/1234.txt"; #この例では「1234」を抽出したい
正規表現でやるなら m|([^/]*)\.txt$|; でいいんじゃないの。
> 正規表現の"."は"/"に対応していないのでしょうか、よく分かりません。
対応とは??
0803デフォルトの名無しさん
2008/12/26(金) 11:21:19Perl の正規表現マッチングアルゴリズムでは対象文字列の左側でマッチする方がよりよいマッチとして判断される。
これは最短マッチ(短い方優先)よりも強いルール。
従って最初の / にマッチするものの方が優先される。
0804デフォルトの名無しさん
2008/12/26(金) 23:55:32まったくジャンルの違うものを頭の中でごった煮してしまったんだな。
0805デフォルトの名無しさん
2008/12/27(土) 14:27:53混同してるんだと思う
ファイル名展開の場合、対象がファイルだから / はまたがない
だから正規表現でファイル名を抜き出す場合も、そういうのを期待したんじゃないかね
0806デフォルトの名無しさん
2008/12/28(日) 11:40:10(-DTHREAD_HAVE_PIDSとか-D_REENTRANTとか)の一覧とか説明ってどこかにある?
CPAN(やtarを展開したdir内)のREADMEやInstallのDocumentにも
一部(-DDEBUGGINGや-Duseithreadsとか)は記載があるけど、./Confugure --helpしても出ててこないし、
その他のOptionの内容(どんな値があるか、どうセットするorしない)とかが知りたんだけど・・・。
0807デフォルトの名無しさん
2008/12/28(日) 14:45:210808デフォルトの名無しさん
2008/12/28(日) 21:45:56perl -V
0809デフォルトの名無しさん
2008/12/29(月) 04:25:45普通に書くと、
$x = $text1;
chomp($x);
$text2 = $x;
こんな風に3行になると思うのですが、こういうのを1行で書けるような技はないでしょうか。
0810デフォルトの名無しさん
2008/12/29(月) 04:37:380811デフォルトの名無しさん
2008/12/29(月) 17:44:24とか実行すると、Linuxでは上手く動作するのに、WindowsXP
のDOSプロンプトだと
Can't find string terminator "'" anywhere before EOF
at -e line 1.
と表示されてしまい、エラーとなってしまうのですが、どうすれば
良いのでしょうか?
0812デフォルトの名無しさん
2008/12/29(月) 17:47:04これはそもそもシェルの使い方の問題であって、
perlとは何も関係ない。
0813デフォルトの名無しさん
2008/12/30(火) 09:42:47JPerl Advent Calendar 2008
http://perl-users.jp/articles/advent-calendar/2008/
0814デフォルトの名無しさん
2008/12/30(火) 13:24:21perlとは何も関係ない。
0815デフォルトの名無しさん
2008/12/30(火) 20:47:06例)
(test)perl]→\(test\)perl\]みたいに感じ
これをスマートに書きたいのですが、うまく書くことができません
ヒントをください
0816デフォルトの名無しさん
2008/12/30(火) 21:08:02ヒント:
http://perldoc.jp/docs/perl/5.10.0/perldata.pod の「Scalar value constructors」
http://perldoc.jp/docs/perl/5.10.0/perlop.pod の「Quote and Quote-like Operators」
および「Regexp Quote-Like Operators」
http://perldoc.jp/docs/perl/5.10.0/perlretut.pod 全部
答:
$str =~ s/(?=[()\]])/\\/g;
0817816
2008/12/30(火) 21:10:59× (?=[()\]])
○ (?=[()[\]])
0819デフォルトの名無しさん
2008/12/31(水) 20:07:01\Q
0820デフォルトの名無しさん
2009/01/01(木) 13:36:50以下のようなログがあります。
-------ここから----------------------
hydraoc(188)Entering OC_PREINITIALIZE
hydraoc(189)Component=terminalserver,
hydraoc(188)Entering OC_INIT_COMPONENT
hydraoc(189)Component=terminalserver, SubComponent=(null)
state.cpp(1006)Setup Parameters
state.cpp(1007)We are running on Wks
state.(1008)Is this adv server No
state.cpp(1009)Is this Personal (Home Edition) No
state.(1010)Is this SBS server No
state.(1011)IsStandAloneSetup = Yes
state.cpp(1012)IsFreshInstall = No
state.(1013)IsTSFreshInstall = No
---------ここまで----------------------------
0821820
2009/01/01(木) 13:43:22-------ここから----------------------
hydraoc(188)Entering OC_PREINITIALIZE
hydraoc(189)Component=terminalserver,
hydraoc(188)Entering OC_INIT_COMPONENT
hydraoc(189)Component=terminalserver, SubComponent=(null)
state.cpp(1006)Setup Parameters
state(1007)We are running on Wks
state(1008)Is this adv server No
state.cpp(1009)Is this Personal (Home Edition) No
(1010)Is this SBS server No
(1011)IsStandAloneSetup = Yes
IsFreshInstall = No
state.cpp(1013)IsTSFreshInstall = No
---------ここまで----------------------------
です。>>820は無視してください。
0822820
2009/01/01(木) 13:45:24合わさったものと考えてください。(上4行がhydraocログ、下8行がstateログ)
質問ですが、Perlを使って、"cpp"のある行だけを抜き出すスクリプト
は書けるのですが、5行目から下全部の合計8行をファイル出力する
Perlスクリプトを作成することは可能でしょうか?
0823デフォルトの名無しさん
2009/01/01(木) 13:50:44perl だと、そのファイルを open して、不要な行を読み飛ばせばいいんじゃないかな。
0824デフォルトの名無しさん
2009/01/01(木) 13:51:12私には
>(1010)Is this SBS server No
>(1011)IsStandAloneSetup = Yes
>IsFreshInstall = No
がどちらのログか判断する根拠がありませんが、あなたにはあるのですよね?
それをプログラムに教えてあげましょう。
0825820
2009/01/01(木) 14:20:25私はPerl初心者ですが、職場の先輩から上記に類似した宿題を
出されていて困っています。もしかして課題の内容がおかしいのでは?
と思っています。
>(1010)Is this SBS server No
>(1011)IsStandAloneSetup = Yes
>IsFreshInstall = No
↑この3行もstateログです。
これをcpp行と一緒に出力させるのは、共通の"Is"もパターンマッチ
させれば良いのでしょうか?でもそうすれば、例えばhydraocログ内に
"Is"が存在すれば一緒に出力されてしまいます。出力は↓のようにしたいです。
--------------------------------------
state.cpp(1006)Setup Parameters
state(1007)We are running on Wks
state(1008)Is this adv server No
state.cpp(1009)Is this Personal (Home Edition) No
(1010)Is this SBS server No
(1011)IsStandAloneSetup = Yes
IsFreshInstall = No
state.cpp(1013)IsTSFreshInstall = No
-------------------------------------
やっぱり課題がおかしいと思うんです.....何かすみません。変な質問してしまって。
0826デフォルトの名無しさん
2009/01/01(木) 16:11:24print unless /^hydraoc/;
で終わりだが。
0827820
2009/01/01(木) 18:48:21ありがとうございます。上のログでは、hydraocログの部分は
各行に"hydraoc"が含まれるので、print unless /^hydraoc/;と
やれば"hydraoc"が含まれる行以外の行を出力、となるのは
初心者の私にもわかります。ただ実際に先輩から出された課題は
"hydraoc"ログ部分に"hydraoc"が存在しない行も含まれます。
上で出した私の事例が不適切でした。ネットや書籍でも調べましたが、
やはり「キーワード"state"を見つけたら、そこから後のすべての行を出力」
みたいな処理は書けませんかね?
0828デフォルトの名無しさん
2009/01/01(木) 19:06:13プログラム言語なんだから、書けないわけないだろ。一体何を言ってるんだ?
0829デフォルトの名無しさん
2009/01/01(木) 19:54:41print if /^state/ .. '';
}
__DATA__
hydraoc(188)Entering OC_PREINITIALIZE
hydraoc(189)Component=terminalserver,
hydraoc(188)Entering OC_INIT_COMPONENT
hydraoc(189)Component=terminalserver, SubComponent=(null)
state.cpp(1006)Setup Parameters
state(1007)We are running on Wks
state(1008)Is this adv server No
state.cpp(1009)Is this Personal (Home Edition) No
(1010)Is this SBS server No
(1011)IsStandAloneSetup = Yes
IsFreshInstall = No
state.cpp(1013)IsTSFreshInstall = No
0830デフォルトの名無しさん
2009/01/01(木) 23:41:22ファイルのopenの仕方、読み込み方、closeのしかた。
全て何も知らない。全く知らない。
もちろん、本を買って勉強する気などサラサラ無い。
ネットで検索する気もぜ〜んぜん無い。
教えてくれ、教えてくれ!を連発するだけで問題が解決すると考えている。
もしかしたら perl どころか、他のプログラミング言語を全く知らない可能性もあるな。
0831デフォルトの名無しさん
2009/01/01(木) 23:45:09それ読んだら「ラクダ本」にいけば良いよ。
0832820
2009/01/01(木) 23:53:43まだ勉強始めたばかりだけど少しなら知ってる。
C#勉強中。
open(OPENFILE >>"xxx.txt")とか、ファイルハンドル使用して
ファイルを読み込んだりファイルに書き込んだりは出来る。
本はリャマ本を半分くらい読んだ。
>>829だと、hydraocが4行分出力されてるので×。
なあ、鼻くそチンカス、>>830、テメーしばくぞカスが。
誰にモノ申しとんじゃワレ。
0833デフォルトの名無しさん
2009/01/01(木) 23:56:06DATAセクションってマイナーだよね?
あんまり人に通じない気がする。
0834デフォルトの名無しさん
2009/01/01(木) 23:58:26書く人の好みによると思うけどさ
0835デフォルトの名無しさん
2009/01/02(金) 00:00:26「hydraoc」のログの特徴か
「state」のログの特徴を徹底的に調べること
両方無いとなれば原理的に分離するのは不可能
おおよその傾向しかないのであればおおよそしか分類できない
それだけ
0836デフォルトの名無しさん
2009/01/02(金) 00:03:01だったらこんな簡単な処理くらいすぐ書けるだろ
なんで書けないのかが不思議なんだが
0837デフォルトの名無しさん
2009/01/02(金) 00:31:500838デフォルトの名無しさん
2009/01/02(金) 00:33:05サンプルコードだから使ってるだけだろw
0839デフォルトの名無しさん
2009/01/02(金) 01:18:08> なあ、鼻くそチンカス、>>830、テメーしばくぞカスが。
> 誰にモノ申しとんじゃワレ。
直接顔あわせたらこんなこといえるわけ無いんだけど。
もう何も答えなくていいでしょ
0840デフォルトの名無しさん
2009/01/02(金) 01:37:38・perlのモジュール探索パス@INCがありますよね?
これに対して動的にパスを追加するのではなく、
常に@INCにあるパスを追加しておきたいのです
どこかにテキストファイルかバイナリファイルのようなものがあって
そこに追記すればいいとかありますでしょうか?
・具体的にはcygwinのperlを使用していますが
CPANから追加するモジュールを/usr/local/libに追加しています。
(デフォルトの/binにLWPモジュールを追加すると,
headが上書きされてしまうため)
0841833
2009/01/02(金) 01:44:42それもわかるんだけど、初心者くさい人向けの
サンプルとしてはいかがなものかと思ったんで
ちょっと言ってみた。
だって、__DATA__とは何ですかとか聞かれたら
またメンドクサいでしょ?
0842デフォルトの名無しさん
2009/01/02(金) 03:32:04>C#勉強中。
>本はリャマ本を半分くらい読んだ。
嘘じゃんwww書籍読んでる人の質問じゃないし
仮に読んでたとしても理解できてないなら読んでないのと同じだしなw
おまいはもっと簡単な入門書的位置付けの本から始めるべきだったんじゃねぇの?www
0843デフォルトの名無しさん
2009/01/02(金) 07:40:42環境変数 PERL5LIB に設定しとくのがお勧め。
0844デフォルトの名無しさん
2009/01/02(金) 08:08:05監査役お疲れです。
0845デフォルトの名無しさん
2009/01/02(金) 15:11:59cgi掲示板を連ねてレンタル掲示板を作ろうかと検討しています。
そこで、全てのフォルダにある掲示板cgiに広告を表示させたいのですが、
MTみたいなモジュールを使って表示させることを掲示板cgiで可能なのでしょうか?
サーバー内
┏bbs1(レンタル)フォルダ
┣bbs2(レンタル)フォルダ
┣bbs3(レンタル)フォルダ
┣bbs4(レンタル)フォルダ
┣bbs5(レンタル)フォルダ
┣bbs6(レンタル)フォルダ
┣bbs7(レンタル)フォルダ
以下どんどん追加
全てに共通した広告を出す。
また、広告の修正なども、1つを修正すれば全てに反映されるようにしたい。
0846デフォルトの名無しさん
2009/01/02(金) 15:27:42> CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
> ( WEBプログラミング板 http://pc11.2ch.net/php/ )
いちおう答えとくと
require '../ad.cgi';
とかすればいいんじゃね?
上記に対して質問があってもここでは受け付けないのでWebProg板に行ってくれ
0847デフォルトの名無しさん
2009/01/02(金) 16:51:58> C#勉強中。
> open(OPENFILE >>"xxx.txt")とか、ファイルハンドル使用して
> ファイルを読み込んだりファイルに書き込んだりは出来る。
ワロタ・・・ことしの初笑い!
勉強と言うのはは、ただ単に「記憶・暗記」するだけじゃダメだ。
「理解・応用」ができなくては意味がない。
ハードディスクという機械を知ってるか?あれにはいろんな情報を詰め込む事が出来る。
だが、ハードディスクは「記憶」するだけ。「理解」はしていない。
データの中身が何であろうと、ただ 覚えただけ なんだよ。
まさに今のキミと同じだ。「理解」して「応用」する力を身につけよう。
0848デフォルトの名無しさん
2009/01/02(金) 18:22:330849デフォルトの名無しさん
2009/01/02(金) 18:31:410850デフォルトの名無しさん
2009/01/02(金) 18:35:33>>>829だと、hydraocが4行分出力されてるので×。
あれ?
自分の環境だと出力されないけどなー
0852デフォルトの名無しさん
2009/01/02(金) 19:22:19> ゴメン。__DATA__ 以下が出力結果だと勘違いしました。
× 勘違いしました
○ 決めつけました
0853デフォルトの名無しさん
2009/01/02(金) 19:40:01>>851 見ると、大当たりだな。
それにしても820よ。本当にこれでいいのかい。
>>829 は「>>827 に書かれた要望」には忠実だが、
本当にこれが欲しかったものなのかどうか、
よく意味を考えて自分で判断しないとな。
0854デフォルトの名無しさん
2009/01/02(金) 19:52:46どうせ、な〜〜んにも考えてないやろ。
0855デフォルトの名無しさん
2009/01/02(金) 21:13:08言語仕様から捻じ曲がってるし。
0856デフォルトの名無しさん
2009/01/02(金) 21:23:55まったくその通りだと思う。Perlなんかさっさと忘れた方がいいよ。
0857デフォルトの名無しさん
2009/01/02(金) 21:38:53そうだな。>>820の言葉が足りない分は察して補いつつ、しかも
上司に提出したら、>>856が言うようにPerlのことをさっさと忘れられるように
なるスクリプトをタダで作ってやったぞ。
$ref = \@hydraoc;
while(<DATA>){
$ref = \@{$&} if /(^hydraoc)|(^state)/;
push @$ref, $_;
}
print "hydraoc log:\n", @hydraoc, "\n";
print "state log: \n", @state, "\n";
__DATA__
hydraoc(188)Entering OC_PREINITIALIZE
hydraoc(189)Component=terminalserver,
hydraoc(188)Entering OC_INIT_COMPONENT
hydraoc(189)Component=terminalserver, SubComponent=(null)
state.cpp(1006)Setup Parameters
state(1007)We are running on Wks
state(1008)Is this adv server No
state.cpp(1009)Is this Personal (Home Edition) No
(1010)Is this SBS server No
(1011)IsStandAloneSetup = Yes
IsFreshInstall = No
state.cpp(1013)IsTSFreshInstall = No
0858デフォルトの名無しさん
2009/01/02(金) 23:30:02残念。課題を100回読んでから出直して来い。
0859デフォルトの名無しさん
2009/01/02(金) 23:38:090860デフォルトの名無しさん
2009/01/02(金) 23:58:370861デフォルトの名無しさん
2009/01/03(土) 00:27:100862デフォルトの名無しさん
2009/01/03(土) 01:12:030863デフォルトの名無しさん
2009/01/03(土) 01:34:170864デフォルトの名無しさん
2009/01/03(土) 14:12:400865デフォルトの名無しさん
2009/01/03(土) 15:27:45大みそかの深夜から参拝する人が玉砂利の参道に列をなした。
警察庁によると、明治神宮の正月三が日のPerl使いの人出予想は305万人。
0866デフォルトの名無しさん
2009/01/03(土) 16:49:03「(何をお願いしたんですか?)今年こそPerl6がリリースされますように、とお願いしました」(20代女性、Perl暦2年)
0867デフォルトの名無しさん
2009/01/03(土) 16:59:560868デフォルトの名無しさん
2009/01/03(土) 17:03:490869デフォルトの名無しさん
2009/01/03(土) 17:26:11プログラム言語なんだから、作れないわけないだろ。一体何を言ってるんだ?
0870デフォルトの名無しさん
2009/01/03(土) 17:44:27しかしプログラミング言語だからというのはいい過ぎ。
$ unkoc -o unko
$ ./unko
うんこ食う
$
みたいな空文字を入力記号として決まった出力を行うプログラムを生成するUNKO言語だとゲームは作れそうにない。
0871デフォルトの名無しさん
2009/01/03(土) 19:23:06ふと 「おなかぺっこぺこだおう」 という言葉を思い出した
0872デフォルトの名無しさん
2009/01/03(土) 21:15:50どうやれば実行できるんですか?
さっぱり判りません
0873デフォルトの名無しさん
2009/01/03(土) 21:20:080874デフォルトの名無しさん
2009/01/03(土) 21:32:08perl *.plとコマンドを打って実行しなさい
Windowsの場合はActivePerl入れればよし、*nixの場合は普通Perlは入ってる
あなたが今から使うとコマンドはperlだけで、場合によってはcdを使うかもしれない
0875デフォルトの名無しさん
2009/01/03(土) 21:33:10これではいくらプログラムの作り方を理解しても意味がない
なんなんですかこれ
0876デフォルトの名無しさん
2009/01/03(土) 21:47:46コマンドを実行してみるとよろし
0877デフォルトの名無しさん
2009/01/03(土) 23:21:590878デフォルトの名無しさん
2009/01/03(土) 23:58:21perl 実行 windows で、ぐぐったらインストール方法から一通り出たぞ。
まさかLinuxやBSDを使ってる訳は無いよな?
0879デフォルトの名無しさん
2009/01/04(日) 00:20:30cgi掲示板を連ねてレンタル掲示板を作ろうかと検討しています。
そこで、全てのフォルダにある掲示板cgiに広告を表示させたいのですが、
MTみたいなモジュールを使って表示させることを掲示板cgiで可能なのでしょうか?
サーバー内
┏bbs1(レンタル)フォルダ
┣bbs2(レンタル)フォルダ
┣bbs3(レンタル)フォルダ
┣bbs4(レンタル)フォルダ
┣bbs5(レンタル)フォルダ
┣bbs6(レンタル)フォルダ
┣bbs7(レンタル)フォルダ
以下どんどん追加
全てに共通した広告を出す。
また、広告の修正なども、1つを修正すれば全てに反映されるようにしたい。
0880デフォルトの名無しさん
2009/01/04(日) 00:23:50>>845
>>846
0881デフォルトの名無しさん
2009/01/04(日) 00:26:07http://pc11.2ch.net/test/read.cgi/php/1204488452/924
>>923
> それを聞いてんだろカス!
>
> 教えてやる知識ねーならくんなよボケw
0882デフォルトの名無しさん
2009/01/04(日) 01:08:330883デフォルトの名無しさん
2009/01/04(日) 01:21:350884882
2009/01/04(日) 01:23:400885デフォルトの名無しさん
2009/01/04(日) 01:34:520886デフォルトの名無しさん
2009/01/04(日) 08:29:58openで対象ファイルがみつからなかったときの処理なんですが
open(TEST,"$adr\.cgi") || $nferror = 1;
として失敗時に$nferrorを1にしたいだけなんですが、
この一行入れただけでどうしてもエラーになります
何故でしょう?
0887デフォルトの名無しさん
2009/01/04(日) 08:34:34open(TEST,"$adr\.cgi") or $nferror = 1;
0888デフォルトの名無しさん
2009/01/04(日) 08:56:03ああ・・・なるほど
なんかそういうあれだったんですね
上手く行きました。ありがとうございました
・・・なんかガックリ疲れた・・・
0889デフォルトの名無しさん
2009/01/04(日) 11:15:27ディスパッチャーやコントローラといったものを学んだほうが良い答えが出せるよ。
CPANでいうと
http://search.cpan.org/~sartak/Path-Dispatcher-0.06/lib/Path/Dispatcher.pm
http://search.cpan.org/~markstos/CGI-Application-Dispatch-2.15/lib/CGI/Application/Dispatch.pm
このへん。
条件が良く分からないから、はっきりしたこも言えないけど、具体的には
mod_rewriteなんかでリクエストURIとそのハンドラとパラメータのマップを管理してあげて
.cgi自体は一個にすればいいんじゃないかな。
.cgiでやるんだったら、speedy_cgiなんかがオススメ。
0890デフォルトの名無しさん
2009/01/04(日) 11:55:290891デフォルトの名無しさん
2009/01/04(日) 12:08:40「なんかそういうあれ」って何か知ってる?
「演算子の優先順位」な。
perl がエラーを吐かずに動く場合もあるから、
きちんと覚えておかないと、どつぼに嵌るぞ。
0892デフォルトの名無しさん
2009/01/04(日) 19:18:03すっごい勉強になりました
どうもどうも
0893デフォルトの名無しさん
2009/01/04(日) 22:50:410895デフォルトの名無しさん
2009/01/05(月) 02:13:17掲示板の管理画面から設定を変えるというのはどうやって作れば良いんでしょう?
例えば以下のレンタル掲示板のようにです。
無料レンタル掲示板〜ABC-CGI〜
http://www.abc-cgi.com/
管理メニュー
http://www.abc-cgi.com/bbs/editsample.html
掲示板cgiのソースを直接いじらないのに、
htmlから掲示板の設定を変更できる仕組みが分からないのです。
具体的に分かりやすく教えて下さいませ。
また、お勧めの書籍などありましたら宜しくです。
0896デフォルトの名無しさん
2009/01/05(月) 02:21:38単に掲示板の設定ファイルとcgiファイルを分離してるだけ
0897デフォルトの名無しさん
2009/01/05(月) 03:00:510898デフォルトの名無しさん
2009/01/05(月) 03:06:01IDないしよく解らんな…
0899デフォルトの名無しさん
2009/01/05(月) 03:14:360900デフォルトの名無しさん
2009/01/05(月) 03:20:240901デフォルトの名無しさん
2009/01/05(月) 10:58:300902デフォルトの名無しさん
2009/01/05(月) 11:28:07CGIがらみはWebProg板で質問したほうがいい回答が得られると思います。
自分も最近PerlでCGIを作り始めたところなので、どのようにするのがベターなのか知りたいところです。
例えば、CPANにあるCinfig::Tinyあたりで別ファイルに設定を保存するのはどうでしょうか。
Config::Tiny
http://search.cpan.org/~adamk/Config-Tiny-2.12/
掲示板CGIスクリプトの冒頭で、
use Config::Tiny;
$Config = Config::Tiny->read( 'file.conf' );
と書いて、設定ファイル(file.conf)から設定値を読み込む。
HTMLのフォーム(<form></form>)から得られた値をこの設定ファイルに書き込む。
$Config->write( 'file.conf' );
0903デフォルトの名無しさん
2009/01/05(月) 19:16:03KCatch.pmがうまく働いてくれないのですがCGI::Carp qw(fatalsToBrowser)を使わないといけないのでしょうか?
という質問をしようとおもったら。
いつも書いてる
use KCatch;
行を
use KCatch qw( execdata );__DATA__
にしたら働いてくれた
原因はなんなんでしょうか?
0904デフォルトの名無しさん
2009/01/05(月) 21:28:47http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%2fKCatch#i2
http://perldoc.jp/docs/perl/5.10.0/perldebtut.pod
0905デフォルトの名無しさん
2009/01/05(月) 21:43:18簡単な質問はもとより、何解な質問にも答えを導き出していますが、その知識はどこで身につけたのでしょうか?
0906デフォルトの名無しさん
2009/01/05(月) 22:13:030907デフォルトの名無しさん
2009/01/05(月) 22:23:04板違い。
http://pc11.2ch.net/prog/
http://okwave.jp/
0908デフォルトの名無しさん
2009/01/05(月) 23:23:57なるほど、いつもは
use strict;
use lib qw( ./cgi-lib ./cgi-macro );
use KCatch;
require 'main.pl';
my $var = {};
&mycgi::main($var);
exit;
とかしてるのに、今回おうちゃくして、.cgiに全部ソース書いてったのが問題だったのね
って結局かわさきさんのHPの説明が1番わかりやすかったw
http://www.kawa.net/works/perl/catch/news.html#usage
0909デフォルトの名無しさん
2009/01/05(月) 23:42:36真上で質問してる俺がいうのもなんだけど
壁にぶつかったときとかに、この記事読むとホっとするよ、そんでフツフツと燃えてくるw
http://jibun.atmarkit.co.jp/lcareer01/rensai/topi11/topi01.html
0910デフォルトの名無しさん
2009/01/06(火) 01:46:400911デフォルトの名無しさん
2009/01/06(火) 13:17:53print if /^state/ .. '';
ですが、最後のシングルクォーテーション2つ「''」は
何を意味するのでしょうか?「行の最後」ってこと?
この処理のロジックを説明していただけませんか?
「もし行頭がstateの場合〜」というところまではわかるのですが…
0912デフォルトの名無しさん
2009/01/06(火) 13:37:15どう見てもただの空文字列だろ。
スカラーコンテキストの「..」演算子の意味を理解すればいいと思うよ。
0913デフォルトの名無しさん
2009/01/06(火) 13:49:23「空文字」を指定しているのはわかります。
(最初は改行文字の指定の\nを省略したものだと思いましたが。)
でも範囲演算子「..」の後に空文字指定ってどういうロジック?
「空文字が見つかるまで」というロジックなのか、
「空文字もすべて」ということなのか、判断がつきません。
上のif文のロジックを言葉で説明してくれませんか?
0914デフォルトの名無しさん
2009/01/06(火) 14:18:00という記事のサンプルで理解できない部分があります。
split(/ /)とsplit(' ')で動きが違う(先頭の空要素の有無)のを
どう解釈すればいいのか教えていただけないでしょうか?
(パターンが空白以外の時は同じ動きです)
#!/usr/bin/perl
# This is perl, v5.8.6 built for i386-linux-thread-multi
use warnings;
use strict;
$_=' hi mom';
print "<",join(':', split(/ /)),">\n"; # <:hi:mom> Perl4 DEFAULT
print "<",join(':', split(' ')),">\n"; # <hi:mom> Perl5 DEFAULT
$_=',hi,mom';
print "<",join(':', split(/,/)),">\n"; # <:hi:mom>
print "<",join(':', split(',')),">\n"; # <:hi:mom>
0915914
2009/01/06(火) 14:23:250916デフォルトの名無しさん
2009/01/06(火) 14:24:06912じゃないけど、本をよく読みなよ。
「/^state/ .. ''」は「/^state/」が真になった後に「''」が真になるまで
真を返すわけだが、「''」は真にならないので、「/^state/」が真になった後、
「/^state/ .. ''」は常に真になる。
0917デフォルトの名無しさん
2009/01/06(火) 14:26:12たぶんこれだな
プロンプト>perldoc perlop
より抜粋
In scalar context, ".." returns a boolean value. The operator is
bistable, like a flip-flop, and emulates the line-range (comma) operator
of sed, awk, and various editors. Each ".." operator maintains its own
boolean state. It is false as long as its left operand is false. Once
the left operand is true, the range operator stays true until the right
operand is true, *AFTER* which the range operator becomes false again.
It doesn't become false till the next time the range operator is
evaluated. It can test the right operand and become false on the same
evaluation it became true (as in awk), but it still returns true once.
If you don't want it to test the right operand till the next evaluation,
as in sed, just use three dots ("...") instead of two. In all other
regards, "..." behaves just like ".." does.
0918デフォルトの名無しさん
2009/01/06(火) 14:29:48splitのエントリに書いてある
0919914
2009/01/06(火) 14:44:37split(' ')だけ特別なのですね。
0920デフォルトの名無しさん
2009/01/06(火) 15:00:05>>917: マニュアルを代わりにひいてペースト
>>918: マニュアルのここに書いてある、だけ
次に「マニュアル読め!」が来たら完璧だったのに。
0921デフォルトの名無しさん
2009/01/06(火) 15:09:570922デフォルトの名無しさん
2009/01/06(火) 20:32:290923デフォルトの名無しさん
2009/01/08(木) 11:41:29みたいな構造のデータを、まるごとコピーするには、何がいいでしょう。
my $q = $p; としたのでは、あとで shift(@$p) とかすると、$q の内容も壊れてしまいますので。
c で memcpy(q,p,sizeof(p)) とやるのと似た手はないでしょうか。
0924デフォルトの名無しさん
2009/01/08(木) 12:05:10CPANでcloneをキーワードに検索するとそれっぽいのがいくつか
出てくるので好きなの使え
0925923
2009/01/08(木) 12:15:570926デフォルトの名無しさん
2009/01/09(金) 10:39:220927デフォルトの名無しさん
2009/01/09(金) 12:25:44Data::Dump::dumpして、evalするのはどうだろうか?
0928デフォルトの名無しさん
2009/01/09(金) 12:29:38my $q = [ @{$p} ] ;
で良いだろーに
0929デフォルトの名無しさん
2009/01/09(金) 21:05:29アウト。
リファレンスの先にさらにリファレンスが
あった場合に破綻する。
0930デフォルトの名無しさん
2009/01/10(土) 03:27:56memcpyなら一段しかコピーされないだろ
0931デフォルトの名無しさん
2009/01/10(土) 05:49:46Cだと配列のメンバに構造体を持てるからね。
当然、構造体のメンバに構造体や配列も持てて、明示的にポインタで分離していないならば
memcpy一発で内包するデータごとコピーできる。
質問(923)の「まるごとコピー」の解釈違いだろうけど、1段階の展開で間に合うならサンプル
で多段階のリファレンスを持つ構造は書かないと思うよ。
0932デフォルトの名無しさん
2009/01/10(土) 13:57:150933デフォルトの名無しさん
2009/01/10(土) 17:45:170934デフォルトの名無しさん
2009/01/10(土) 18:09:300935デフォルトの名無しさん
2009/01/10(土) 18:53:250936デフォルトの名無しさん
2009/01/10(土) 20:00:110937デフォルトの名無しさん
2009/01/10(土) 20:15:360938デフォルトの名無しさん[
2009/01/10(土) 21:56:49ググっても見当たらんのだが。
rubyは当然としても、pythonはあるし…
もっとも、無くても困らんからどうでもいいといえば、どうでもいいんだが…
0939デフォルトの名無しさん
2009/01/10(土) 22:20:100940デフォルトの名無しさん
2009/01/10(土) 22:20:430941デフォルトの名無しさん
2009/01/10(土) 23:10:11からmongersでもたどってみれば?
0942デフォルトの名無しさん
2009/01/11(日) 00:06:570943デフォルトの名無しさん
2009/01/11(日) 00:08:000944デフォルトの名無しさん
2009/01/11(日) 00:51:27お互いの傷を慰め合う
0945デフォルトの名無しさん
2009/01/11(日) 13:38:07こんなのがあったとき、$cはどうなりますか?
0946デフォルトの名無しさん
2009/01/11(日) 13:41:400947デフォルトの名無しさん
2009/01/11(日) 13:42:370948デフォルトの名無しさん
2009/01/11(日) 14:57:390949デフォルトの名無しさん
2009/01/11(日) 15:23:180950デフォルトの名無しさん
2009/01/11(日) 16:19:18逆にユーザー会なんてないものが規格や競争に買っている証なのかもしれんね。
Perlだけでなく。OSとかも。
0951デフォルトの名無しさん
2009/01/11(日) 20:37:23package foo;
sub new {
my ($class, %conf) = @_;
my $self = bless {}, $class;
$self->{hoge_func} = \&hoge_func;
$self->{piyo_func} = \&piyo_func;
return $self;
}
sub call_function {
my ($self, $func_name, $argv) = @_;
return $self->{$func_name}($argv);
}
sub hoge_func { #いろいろ }
sub piyo_func { #いろいろ }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
呼出側で
$obj->call_function('hoge_func', $argv);
とすると、 hoge_func, piyo_func ともに $_[0] に $argv がきてしまいます。
$_[0] には、オブジェクトのリファレンスが入ってるものだと思ってたのですが、
そうする為には sub call_function{} の return のとこを
return $self->{$func_name}($self, $argv);
にしないと オブジェクトのリファレンスが渡されません。
何故でしょうか?
また、こういう事をしたい場合の王道的な方法というのがあったら教えてください。
実際には hoge_func, piyo_func 的な関数が 数十から百くらいになる予定なので
統一的な呼び出し方にしたいのです。
0952デフォルトの名無しさん
2009/01/11(日) 21:05:23評価順序がこうだから
($self->{$func_name})->($argv);
0953デフォルトの名無しさん
2009/01/11(日) 22:22:09簡潔なレスありがとうございます。
いまいち理解できてないので、もうちょい調べてみます。
0954デフォルトの名無しさん
2009/01/11(日) 22:58:35#!/usr/bin/perl -w
use strict;
package Foo;
sub new { bless {}, $_[0] }
sub hoge { print 'hoge:', map("[$_]", @_), "\n" }
sub piyo { print 'piyo:', map("[$_]", @_), "\n" }
package main;
my $obj = Foo->new;
$obj->$_(int rand 10, int rand 20) for qw(hoge piyo);
__END__
0955デフォルトの名無しさん
2009/01/11(日) 23:10:08インスタンス毎にクロージャを生成して持たせるんじゃなく、
命名規則によって処理内容が自動で決まるようなメソッドを
沢山持つクラスを作りたいなら AUTOLOAD とか。
http://search.cpan.org/dist/perl-5.10.0/pod/perlsub.pod#Autoloading__
http://perldoc.jp/docs/perl/5.10.0/perlsub.pod
0956デフォルトの名無しさん
2009/01/12(月) 11:30:27CGIに対しても広告が表示されてしまうので困っています
なんとかなりませんか?
0957デフォルトの名無しさん
2009/01/12(月) 11:45:060958デフォルトの名無しさん
2009/01/12(月) 13:23:25言っとくけど、WebProgのPerlスレも違うからな
0959デフォルトの名無しさん
2009/01/12(月) 17:48:21日本語わかる?
0960デフォルトの名無しさん
2009/01/12(月) 19:14:51スレチだが、完璧な解決方法を教えよう。
有料ホームページを使え。
0961デフォルトの名無しさん
2009/01/12(月) 23:50:09貧乏スレにでもいけ
0962デフォルトの名無しさん
2009/01/13(火) 00:45:110963デフォルトの名無しさん
2009/01/13(火) 10:23:53普通はmod_layoutとかのサーバサイドじゃないかね
直接は書かないと思う
0964デフォルトの名無しさん
2009/01/14(水) 01:27:42perlとちょっとしたflashのasくらいしか書きません
0965デフォルトの名無しさん
2009/01/14(水) 02:43:030966デフォルトの名無しさん
2009/01/14(水) 03:05:240967デフォルトの名無しさん
2009/01/14(水) 09:50:11Notepad++
0968デフォルトの名無しさん
2009/01/14(水) 09:58:48Perl書くのにどんなエディタ使ってる?
http://pc11.2ch.net/test/read.cgi/php/1014357485/
使いやすいエディタって何よ?
http://pc11.2ch.net/test/read.cgi/php/991372719/
スレ立てるまでもない質問はここで 第94刷
http://pc11.2ch.net/test/read.cgi/tech/1226461162/
★質問誘導スレ★
http://pc11.2ch.net/test/read.cgi/tech/1066747198/
0969デフォルトの名無しさん
2009/01/15(木) 01:44:19edlinにもう一票
0970デフォルトの名無しさん
2009/01/15(木) 19:47:100971デフォルトの名無しさん
2009/01/15(木) 20:13:020972デフォルトの名無しさん
2009/01/17(土) 21:24:14結果が取得できないのですが、どう変えたらデータが取得できますか?
#!/usr/bin/perl
print "Content-type: text/html¥n¥n";
$tmpurl = "http://www.google.co.jp/search?q=%E5%B1%B1%E7%94%B0";
$all = `wget -q -O - "$tmpurl"`;
print "$all";
0973デフォルトの名無しさん
2009/01/17(土) 21:34:290974デフォルトの名無しさん
2009/01/17(土) 21:36:46$tmpurl = 'http://www.google.co.jp/search?q=%E5%B1%B1%E7%94%B0';
0975デフォルトの名無しさん
2009/01/17(土) 21:46:00ただソースをみるだけなら、これはダメかい?
#!/usr/bin/perl
use warnings;
use strict;
use WWW::Mechanize;
my $url = "http://www.google.co.jp/search?q=%E5%B1%B1%E7%94%B0";
my $mech = WWW::Mechanize->new();
$mech->get($url);
print $mech->content;
0976デフォルトの名無しさん
2009/01/17(土) 23:03:16google.co.jp は wget や LWP を弾く。
> perl -MLWP::Simple -e "getprint q!http://search.yahoo.co.jp/search?p=%E5%B1%B1%E7%94%B0/!"
0977972
2009/01/17(土) 23:11:410978デフォルトの名無しさん
2009/01/18(日) 00:54:19常識で考えてさぁ、ソース見るためだけに perl から wget を呼び出すと思う?
もうちょっと考えてから書き込めよ。
0979デフォルトの名無しさん
2009/01/18(日) 09:26:08ちょっと、付け足せばwgetと同じ事ができる
>常識で考えてさぁ、ソース見るためだけに perl から wget を呼び出すと思う?
ばっかじゃないの
0980デフォルトの名無しさん
2009/01/18(日) 10:19:11$lines =~ /((.*\n?){$n])/m;
print $1;
考えたけど、これが限界でした。
0981デフォルトの名無しさん
2009/01/18(日) 12:18:50for(0..5){print scalar <$file_handle>;}
0982デフォルトの名無しさん
2009/01/18(日) 12:35:37それは違うだろ。
0983デフォルトの名無しさん
2009/01/18(日) 12:36:24print +($str =~ /\G.*\n/g)[0..$n-1];
ついでに質問だが、実行フェーズでグローバルでリードオンリーな定数定義する方法
にはどんなのがありますか?
BEGIN { *HOGE = sub () { } }
$hoge = get_hoge();
no warnings 'redefine';
*HOGE = sub () { $hoge };
これをもう少しスマートに書きたい
0984デフォルトの名無しさん
2009/01/18(日) 12:39:120985デフォルトの名無しさん
2009/01/18(日) 14:25:08*PI = \3.14159265358979;
http://www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html#Symbol_Tables
0986デフォルトの名無しさん
2009/01/18(日) 14:48:24どうもありがとうございます。
問題なく実行できたのですが、+はどういう意味ですか?
0987デフォルトの名無しさん
2009/01/18(日) 14:56:090988デフォルトの名無しさん
2009/01/18(日) 15:15:36print( $str =~ /\G.*\n/g ) [0..$n-1];
ではなく
print( ($str =~ /\G.*\n/g)[0..$n-1] );
と解釈させる為。
http://perldoc.jp/docs/perl/5.10.0/perlop.pod
> 単項演算子の "+" は、たとえ文字列に対して用いられた場合にも、
> 何もしません。関数名に続けて括弧付きの式を書く場合に、関数の
> 引数リストと解釈されないようにするために用いることができます。
>>987
訂正の必要を感じたなら perlmod のコミット権持ってる人へ連絡して
やってくれ。5.10.0 でも 5.8.9 でもこのままだから。
0989デフォルトの名無しさん
2009/01/18(日) 15:29:0411 2D 44 54 FB 21 09 40 : 3.14159265358979
18 2D 44 54 FB 21 09 40 : 3.141592653589793
18 2D 44 54 FB 21 09 40 : 3.1415926535897932
18 2D 44 54 FB 21 09 40 : 3.14159265358979324
18 2D 44 54 FB 21 09 40 : acos(-1)
Intel CPU ならこんな感じになる。
perlmod のコミット権持ってる人って誰なのかしらん・・・。
0990デフォルトの名無しさん
2009/01/18(日) 15:59:47*PI = \3.14159265358979;
But this value is slightly less than the IEEE 754 double precision accuracy.
The following is the hexadecimal dump of each right-hand side value.
28 2D 44 54 FB 21 09 40 : 3.1415926535898
11 2D 44 54 FB 21 09 40 : 3.14159265358979
18 2D 44 54 FB 21 09 40 : 3.141592653589793
18 2D 44 54 FB 21 09 40 : 3.1415926535897932
18 2D 44 54 FB 21 09 40 : 3.14159265358979324
18 2D 44 54 FB 21 09 40 : acos(-1)
You should choice at least 3.141592653589793.
メーリングリストに入ってる人がいるなら、誰かつっこんどいてくれ。
0991デフォルトの名無しさん
2009/01/18(日) 16:32:41big endian にしないと分からなくない?
なんで上位ビットが・・・って思った。
0992デフォルトの名無しさん
2009/01/18(日) 16:45:360993983
2009/01/18(日) 18:36:48うむ、リテラルなスカラー限定な技ですね
そうではなく、もっと動的にやっちゃう技が聞きたかったのです
あ、でもReadonly.pm等でリードオンリーにした変数を型グロブのスカラースロットに入れるってのはあるかも。。。
0994デフォルトの名無しさん
2009/01/18(日) 18:46:37ひとつ賢くなったわ
0995デフォルトの名無しさん
2009/01/18(日) 19:03:48何をしたいのかよく分からんがこういう事ではないのか?
#!/usr/bin/perl -w
use strict;
use Scalar::Util qw(looks_like_number);
our $PI;
my($pi, $r) = map looks_like_number($_) ? $_ : 3, @ARGV;
eval "*PI = \\$pi";
print 2 * $PI * $r, "\n", eval { $PI = 3 } ? "Uh...\n" : $@;
__END__
0996983
2009/01/18(日) 19:18:57レスthx
eval文字列なんて反則技すぎる。。。
配列、ハッシュへの適用も考えたら
Readonly my @pi = get_pi();
*PI = \@pi;
の方がいいね
0997983
2009/01/19(月) 18:56:09<<996はなしの方向で
Readonly our @PI => get_pi();
0998デフォルトの名無しさん
2009/01/20(火) 00:46:590999デフォルトの名無しさん
2009/01/20(火) 01:11:351000デフォルトの名無しさん
2009/01/20(火) 01:12:0110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。