[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 04/18 14:57 / Filesize : 169 KB / Number-of Response : 631
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlについての質問箱 38箱目



1 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:22:12 ]
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
( WEBプログラミング板 pc11.2ch.net/php/ )

CGIの質問は答えが Perlと全然関係ない話に帰着する場合が
多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

www.perl.org/get.html
● 2008/09/21 現在の最新版(安定版): 5.10.0
● 2008/09/21 現在の開発版: 5.9.5

▼ 前スレ
Perlについての質問箱 37箱目
pc11.2ch.net/test/read.cgi/tech/1218449440/

リンク集は>>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは>>5-6 あたり


2 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:22:38 ]
[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: 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/


3 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:23:02 ]
[モジュール]
CPAN.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


4 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:23:32 ]
#  [Perl 日本語処理の基礎の基礎]
# このレスは、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でエンコードする必要があります。


5 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:24:39 ]
1 ttp://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 ttp://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 ttp://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 ttp://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 ttp://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 ttp://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 ttp://pc2.2ch.net/test/read.cgi/tech/1068051036/ (事故により消滅)
8 ttp://pc2.2ch.net/test/read.cgi/tech/1074151549/ (事故により消滅)
9 ttp://pc5.2ch.net/test/read.cgi/tech/1079114157/
10 ttp://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 ttp://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 ttp://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 ttp://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 ttp://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 ttp://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 ttp://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 ttp://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 ttp://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 ttp://pc8.2ch.net/test/read.cgi/tech/1131286411/


6 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:25:07 ]
[過去スレ2]
21 ttp://pc8.2ch.net/test/read.cgi/tech/1134327348/
22 ttp://pc8.2ch.net/test/read.cgi/tech/1138519327/
23 ttp://pc8.2ch.net/test/read.cgi/tech/1141742901/
24 ttp://pc8.2ch.net/test/read.cgi/tech/1146022352/
25 ttp://pc8.2ch.net/test/read.cgi/tech/1149259409/
26 ttp://pc8.2ch.net/test/read.cgi/tech/1153412251/
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/


7 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:37:52 ]
すれ立て乙

8 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 14:28:51 ]
もういいです

9 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 14:42:33 ]
同感だが、ないと寂しいのも事実

10 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 14:43:26 ]
いままさに転職で就活してるが、PerlとかPHPとかできますって言っても
「PHP()笑ですか。Javaとかできますか?」って言われるわww
ちなみにPerlの話題なんて微塵もでません。言っても「へぇ…」程度

あんまりJavaJava言われるから、Javaのコードすら書いたことないのに
いま勉強中です!資格取得めざしてます!!なんて言うようにしてみたら
Javaでちょっとコード書いてきて見せてとか言われてしまって、
そこで初めてJava触ったけど
MVCアーキテクチャとかっていうやつだっけか。たしかにこれは面倒だなw

仕事でいろいろ分業するのにはこういう作りはすごくよさそうだけど
個人で趣味でやるならPHPで十分目的は達成できるしPHPでいいだろうな



11 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 15:10:14 ]
ファイルハンドルからファイル名を取得することはできますでしょうか?
xxxxxxみたいな関数とかあります?

open my $fh, "data.txt";
$file_name = xxxxxx $fh;
print $file_name; #=>data.txt

12 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 15:23:53 ]
無いと思う。つか、ファイルを開く時点で名前を把握してるのに、なんでわざわざ
ファイルハンドルから取得する必要がある?

13 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 15:47:31 ]
>>12
ないですか。

ファイルロックをする関数で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秒待つ
}
}

14 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 16:37:34 ]
>>13
flock() が使えない環境で動かす必要があるなら、最初から他の方法に統一したほうがいいように思えます。
flock() だけ分岐させても、どちらに分岐するかによって flock() 依存の機能の利用可否が異なりますから面倒になるだけです。

それはそれとして、その構成だと呼ぶ側で既に open() してるわけですから、
引数にファイル名を渡してやればいいんじゃないですかね。


15 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 17:00:49 ]
>>14
flockが使える環境ならば、ファイルロック機能が強固なflockを使ってもらい、使えない場合は、
ディレクトリ作成方法でまかなおうかと思いました。

ファイル名も引数で渡す方法でいこうと思います。

16 名前:デフォルトの名無しさん [2008/09/23(火) 17:27:20 ]
PerlでCのEnumみたいなのを定義する上手い方法はないかな?
それともハッシュでやるしかないんでしょうか?

17 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 17:39:20 ]
>>16
cpan にあるなあ
ttp://search.cpan.org/~zenin/enum-1.016/enum.pm
求めるものかどうか知らんけど。

18 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 17:40:38 ]
>>17
あーこれグッドです。どうもありがとうございます。

19 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 18:03:50 ]
定数って正規表現中で使えないのか・・・当たり前だよね
やっぱりPerlならHashでやるのが一番いいのかもね

20 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 18:52:06 ]
(??{})

いや、なんでもない



21 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 10:13:37 ]
>>19
<q cite="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__

22 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 10:30:46 ]
>>21
>>16 からの話の流れを読むと、
列挙型が欲しくて enum (>>17-18) を使ったけれど、enum の提供する定数はサブルーチンベースなのでパターン内に展開できない(>>19)。
それに対し >>20 が控え目に打開案を示した、という流れ。

シンボルテーブルベースの列挙型を新たに実装する手もあるし、
Readonly.pm を使う手もあるけど、
変にこだわりさえしなきゃ >>19 の通りハッシュで済む話だね。

23 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 06:39:52 ]
qb5.2ch.net/test/read.cgi/operate/1222311594/210

perlで書くとこうなる

24 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 11:14:17 ]
Perlを勉強してやる!


25 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 14:32:07 ]
>>23
read.cgiはCで書かれてるつーの。

26 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 15:14:43 ]
>>24
つ、通報しま

27 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 15:42:10 ]
>>23みたいに、内容の違うpageを自分の妄想と結びつけてソースだと言い張る
頭がおかしい人間がこの掲示板には多いよね。

>>23のリンク先は、「cでperlみたいに正規表現を使いたいんだけどどうすりゃ良いの?」
というひろゆきの質問スレなのに、それがわからない。

煽りでなしに、病院で診察を受けた方が良い。

28 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 15:54:38 ]
自分で掲示板作って
自分でそこで質問する、って
最強だよな。

29 名前:デフォルトの名無しさん [2008/09/27(土) 08:14:06 ]
do{last}while(1)
なぜこれがエラーになってしまうのでしょう?
do{last}for(1)
これはおkなのに

30 名前:デフォルトの名無しさん [2008/09/27(土) 10:17:16 ]
文字列がどれだけ合っているかを判別するにはどのようにしたらよいでしょうか?

以下のように
-------------
(比較元) 我が輩は猫である。

我が輩は人である。 -> 90% ほど合致。
我輩は猫である。  -> 90% ほど合致。
猫である我が輩は。 -> 5% ほど合致。
-------------
ように算出できないでしょうか?



31 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 18:27:16 ]
www.aoky.net/articles/steve_yegge/tour_de_babel.htm

「そしてもちろん、Perlにはそのほかにもたくさんデザイン上の
奇妙なところがある。たとえば「コンテキスト」を見るといい。そ
れはラリーがシェルスクリプトからコピーしたN変数ネームス
ペースやシジルによるデリファレンスのようなおかしな決断の
ぞっとする副産物だ。Perlでは、すべてのオペレータ、すべて
の関数、すべての操作が、その「コンテキスト」に従い、6つの
うちのランダムな1つの仕方で振る舞う。与えられたコンテキス
トにおいて特定の操作がどう振る舞うかを支配するルールや
ヒューリスティクスというのは存在しない。あなたは単にすべて
暗記しておくしかないのだ。

例がほしい? スカラーコンテキストでハッシュにアクセスすると
、分子が割り当てられたキーの数、分母がバケットの数となっ
ている分数を内容とする文字列が得られる。クジラのはらわた
だ。そう言ったでしょ。」

32 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 18:28:54 ]
>>31
を読んで、「ほんとかよ?」と思ったので実験してみた。

my $a;
my %b;
%b=qw (a b
c d
e f
g h);

$a=%b;
print "$a\n";

実行結果。
4/8

本当だ!
この仕様考えたヤツはいったい何が不満だったのか?

33 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 18:50:31 ]
>>30
Levenshtein距離とか

34 名前:デフォルトの名無しさん [2008/09/27(土) 19:33:23 ]
>>32
Javaで言えばただのtoStringじゃん

35 名前:デフォルトの名無しさん [2008/09/27(土) 19:38:22 ]
ついでに言えばperlのコンテキストもOOPの演算子オーバロードも(使う方からすれば)似たようなもの

36 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 20:54:49 ]
perlのかっちょええエディタを紹介して。
コードの自動補完とかできるやつ。

37 名前: ◆TWARamEjuA mailto:sage [2008/09/27(土) 22:49:21 BE:654023-2BP(7089)]
(・o・)ポカーン

38 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 23:04:10 ]
>>29
do ~ 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 構文なんて使うなよ…

39 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 23:15:21 ]
「い」が抜けたorz...


40 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 23:27:27 ]
「でもいい」も抜けてたな。
酒飲んで書き込むもんじゃねえなあ



41 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 00:26:39 ]
>>29
while(1)・・・でいいのをわざわざdo・・・while(1)で書いてるくらいだから、
よっぽど、do-while文が好きだったんだな。どの言語の影響だ?

Perlのdo-while/untilループは通常のループ制御が使えんから、使い物にならんよ。
>>38みたく、みっともないことになる。

42 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 00:35:15 ]
Exporterを使って全関数をExportするにはどうしたら良いでしょうか?
@Exportに全関数名を入れるのは骨が折れるのでこの方法は避けたいです。

43 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 01:25:25 ]
正規表現で.+と.+?の違いはなんでしょうか?
前者は任意の文字が1個以上続くというのはわかるのですが、後者がわかりません。

よろしくお願いします。

44 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 01:59:56 ]
マンドクセー
最長と最短

45 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 02:26:47 ]
>>42
Perlは関数とか実行時に動的に割付可能な言語だから、いちいち名前を列挙するのが当然と思われ。
ま、俺もPerlあんま詳しくないんだけど、自動で全部というのはプラクティスとしてありえないと思う。

強引にやるなら、コンパイル時にシンボルテーブルのコードっぽいやつをとりあえず
@EXPORTに突っ込むことが考えられるが、こんなことやってるのいままでPerl関係のコードで見たことがない。
見たことがないということは、やらない方がいいということ。

@EXPORT = map {*{$_}{NAME}] grep {*{$_}{CODE}} values %PACKAGENAME::

PBPにサブルーチンにEXPORT属性を設定する方法が紹介されているので、ここらあたりで
妥協できないか。

46 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 08:59:51 ]
他のモジュールと関数が衝突すると痛いので、
オブジェクト指向化推奨されてる。
EXPORTするのは定数ぐらいにした方がいい。

47 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 09:47:27 ]
大量に定数定義するモジュールで45みたいなことやったわ。
全部大文字のシンボルを@EXPORT_OKに追加するとかそんなの。
いちいち列挙するのだるかったのでつい魔が差した


48 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 21:15:00 ]
perlはそのうちこうなる↓
namidame.2ch.net/test/read.cgi/news/1222604031/

49 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 01:05:31 ]
>>45
やはり全部書くべきですか。ただ面倒というだけで問題は無いのでひとまずはそれで行こうと思います。
PBPというのはPerl Best Practicesですね。まだ読んだことが無いので手を出してみます。

>>46
薄学のためオブジェクト指向についてまだよく分かってないのですが、
確かに全関数をエクスポートするくらいならオブジェクト指向で組めばよい気がしてきました。
まだ関数名の衝突という事態には当たったことはありませんが、
オブジェクト指向で組むことも考えてみようと思います。

50 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 08:03:59 ]
ときどき開発者の中には、特に Perl のプログラマーは、
PHPを「劣った」言語だと考える人がいます。
それについてはどう思いますか。



51 名前:デフォルトの名無しさん [2008/09/29(月) 11:08:45 ]
PHPっつたって、バージョン違えば別言語なんだからバージョン言ってもらわないと。
5.2と5.3のマイナーバージョン違いでさえ大幅に違うんだからさ。

52 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 11:40:15 ]
劣ったとは思わんがPerlや他の言語を元にWebに特化したわりには冗長だな
そしてプログラミングセンス的に劣った奴でも簡単に扱えるのは良いんだか悪いんだか・・・
Perl以上に出来る奴と出来ない奴の差が激しいかもね

無駄に関数多いけど新しいものをどんどん取り入れようとしてる姿勢は良いと思う
が、ますます冗長になっていく・・・

某社ではプログラマにはPHPは使わせてなかった
あんなのはHTMLのコーダーやデザイナーが埋め込みで使うスクリプトだ、と
極論ではあるがそういう使われ方が結構多いんじゃないか?


53 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 11:54:26 ]
PHPは成長中の言語だから、一概に言えない。
ただ、Perlと同じく継ぎ接ぎの酷さが見えてきた感じはする。

54 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 22:26:06 ]
ある程度以上メジャーになってしまうと、あとから大規模に言語仕様を弄るのは大変だからな。
同様の問題は、PerlやPHPに限らずRuby,PythonとかC/C++とかも多かれ少なかれ抱えてると思う。

55 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 07:11:06 ]
おまいら、eclipse + padwalker + epic
使ってる?

56 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 08:21:44 ]
builder.japan.zdnet.com/news/story/0,3800079086,20361311,00.htm
ここみたら、perlのエディターが

Perl

* EPIC
* PerlBuilder
* PerlComposer
* Perl Editor
* Perl Express
* Open Perl IDE
* OptiPerl
* Zeus

こんなに紹介されてるんだけど、どれが最強?

57 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 08:51:27 ]
1級perl検定

以下のコードのバグを見つけよ
(制限時間15秒)

---------------------------------------

for ( my $a=1; $a<=10; $a++ ) {
 print "$a\n" if $a=3;
}

58 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 09:01:22 ]
www.donzoko.net/doc/memo/unlikeperl.html
ここに書いてあるんだが、ひょっとして
モジュール同士で相性が悪いってことはあるのか?

もしそれが本当だとしたら、モジュールなんでもかんでも
いれたり使ったりすると原因不明のバグに悩まされることにも
つながりかねないのか?

59 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 10:08:24 ]
>>57
if $a==3 かな?
15秒以内でみつけたから、俺、上級?

60 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:06:08 ]
配列の任意の要素を削除するにはどうすればいいのでしょうか?

@arr = (1, 2, 3, 4, 5);
$del_element = 3;

($del_elementで指定した要素を削除する処理)

print "@arr"; #=> 1 2 3 5



61 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:08:48 ]
>>60
splice

62 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:21:49 ]
>>61
d
できました

63 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:41:24 ]
Perl::Critic
ってなんなのかなぁ?

64 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:48:14 ]
>>58
SwitchとAcme::Comment がソースフィルタタイプのモジュールだからだろ?
ソースフィルタタイプなんて一個でも気持悪い(元のコードを改変すんだぜ?)のに
モジュールの二段重ねとか、そりゃ危険は高かろう。

つか、フィルタタイプだろうとなかろうと、cpan.searchでフィックスしてない
バグくらいは閲覧してから入れるか否かの判断しろよ、、、

65 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 14:09:56 ]
blog.nqou.net/2006/11/20225449.html
ここに書いてある
perltidy
ってのをいれようと思ったんだが、
ActiveperlのPPMには入っていないようだ。

しかし、Acme::tidyというのが代わりに検索で
出てくるんだが、これでも同じなのか?

66 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 14:14:28 ]
googlewhacks.blogspot.com/2007_07_01_archive.html

いったいこれはなんだー

67 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 14:29:04 ]
>>65
自己解決した。
検索のときにハイフンを入れてなかった。
ハイフンいれたら検索で出てきた。

68 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 15:19:21 ]
perlcritic
使い方がいまいちよくわかんね。

69 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 19:15:02 ]
eclipse + padwalker + epic
でperlなのだが、

prin

って打ったときに、
print
printf

って候補を出してくれる、っていうのはできないの?

70 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 19:34:32 ]
RSS1.0、RSS2.0、Atom0.3のRSSを生成したいのですが、
オススメのモジュールなどありますでしょうか?
できればインストールが簡単(*.pmコピるだけとか)で扱いやすいので。



71 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 22:31:04 ]
UNIXタイムスタンプ→グレゴリオ歴に変換するにはどうすればいいのでしょうか。
localtime((stat 'hoge.png')[9]) としても、どうも変な変換になっているようなのです。

72 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 21:08:27 ]
CPANモジュールについてはここでいいですか?
Text::MeCabの最新版
search.cpan.org/~dmaki/Text-MeCab-0.20007/
がどーしてもMacOS Xにインストールできません。
Makefileの-arch ppcを削ったらmakeできましたが、
それをmake installしてもまともな結果になりません。
どなたか御存知ですか?

73 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 21:15:48 ]
>>71
scalar localtime((stat 'hoge.png')[9]) にすると希望どおりだとかいうオチでは。

>>72
前にCPAN on OS X で困ってる人が来ていろいろやりとりしてたら
「MacPortsで解決しました!」という出来事があったのでこわいのです。

74 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 22:02:08 ]
>>73
> scalar localtime((stat 'hoge.png')[9]) にすると希望どおりだとかいうオチでは。

マニュアルを見ると希望通りに出来ると云うオチでしょう。

75 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 23:14:32 ]
perlソースコードの1行目のshebangを置換させるようなプログラムを
以下みたいなone-linerで書きたいのですが

perl -pi.bak -e 's/#!.*/#!c:\\perl\\bin\\perl/ if($. == 1)' *.pl

$. の行数が、2つめのソース以降も値を引き継いでしまいます
なにかうまい方法はないでしょうか

76 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 01:03:19 ]
>>75

組み込み関数の eof を調べてみたらいいと思うよ。


77 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 01:19:21 ]
>>76
ありがとうございます
eofは使ったことがありませんでした
試してみます

78 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 07:41:10 ]
普通に丸呑みモードでいいやん?
perl -i.bak -0777pe 's/\A#!.*?\n/hoge\n/ ' *pl

79 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 18:05:27 ]
cgi掲示板なのですが、ログインすると文字化けしてまして、
コードが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"

を追加して日本語になるように、お願い致します。


80 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 18:26:15 ]
>79
WebProg板へ行った方が的確な回答が得られるんじゃないかな。


で、" " の中で、更に " " を使うな。
人間ならともかく、コンピュータはどこまでが " " の範囲なのか理解できない。




81 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 18:27:33 ]
すでにWebProgにマルチしてるよコイツ

82 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:09:29 ]
質問です。ActivePerlをインストールしコマンドラインでppm install DBD::mysqlを実行したのですが
ppm install failed: Can't find any package that provides DBD::mysql
というエラーメッセージが出ます

DBD::mysqlはリポジトリから無くなってるのでしょうか?

83 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:32:19 ]
追記:PERLバージョン5.10.0です
新バージョンに対応してるDBD::mysqlがないということでしょうか

84 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:29:38 ]
Active Perl 5.8.8 では ppm install DBD:mysql できるぞ。
無理して 5.10.0 使わんでもいいんじゃない?

85 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:47:26 ]
>>82
cpan使えば?

86 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 12:29:01 ]
pc11.2ch.net/test/read.cgi/prog/1221751414/60
これはどういうことだ

87 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 12:50:24 ]
VB、Java、最近だとruby、このあたりは、プログラマに向いてない
人間の比率が高いから、採用の目安としては使えない、ってことじゃないかな。
昔のコボラみたいに融通が利かない人間を採ってもあとあと困るし。

88 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 17:40:03 ]
Mail::Sendmail

これの正しい発音は、

メール コロンコロン センドメール

で合ってる?

89 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 18:39:13 ]
滅入る 殺殺 千度滅入る

90 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 19:00:16 ]
Acmeはちゃんとアクメって読めよ



91 名前:デフォルトの名無しさん [2008/10/04(土) 19:27:09 ]
ファイルを読み込むとき、ファイル名を指定する。
log.txt
ここで質問。ファイル名が連番になっていても 順に読めるのでしょうか?
log001.txt
log002.txt

open(IN, "log.txt");
print while (<IN>);
close(IN);
log003.txt

92 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 19:34:12 ]
はあ

93 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 20:34:36 ]
日本語でおk

94 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 20:47:45 ]
globれ

95 名前:デフォルトの名無しさん [2008/10/04(土) 22:27:56 ]
だから
open(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); 

って書くと面倒でしょう?

ファイル名が連番になってて 順に読めないのかどうか?が知りたいのですよ。

96 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:30:44 ]
200個のファイルを読み込みたいのだよ。
200個分のファイルを読むように ソースコードを書くのが 手間がかかりすぎるやん?
2000行ぐらい書くことになるかもしれない。
だから、 ファイル名を連番にして、 
200行ぐらいの短くて分かりやすいコードは書けないのでしょうか?

97 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:33:04 ]
>>91
my $a;
$a="log001";
print "$a".".txt\n";

$a++;
print "$a".".txt\n";

これちょっと実行して結果見てみ。

98 名前:デフォルトの名無しさん [2008/10/04(土) 22:36:07 ]
>>94
なかった

99 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:37:58 ]
>>97
それ!それです。
マジ助かる。ありがとうございました!!

100 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:37:58 ]
>>98
何がないんだよ



101 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:41:07 ]
globでえーやん

102 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:02:00 ]
助かるってことはループは使えるのかな。globもないらしいしよくわからない。
例によって $a は(ry ついでに "$var" って(ry

103 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:03:50 ]
$varなんかどこに書いてあるんだよ

104 名前:102 mailto:sage [2008/10/04(土) 23:05:46 ]
じゃあ元通りの "$a"

105 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 04:55:51 ]
>87
改行の仕方がおかしいせいで別の意味に取れる

106 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 05:25:14 ]
>>102
つかこの程度の発想が出来ないとプログラムセンス的になぁ・・・


107 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 13:03:55 ]
かなり致命的だよな。
そこそこスジの良い人なら、仮にPerlが初めて触った言語でも
勉強3日目には卒業してるレベル。

108 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 17:14:19 ]
オレと同期入社の女子社員は
>>95みたいなプログラムを本当に書いてた

109 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 10:24:45 ]
質問者もひどいが回答者もひどいという話か

110 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 23:15:39 ]
if文条件部の正規表現で、gオプションを付けているのをどこかで見たのですが、別に付けなくても
いいような気がするのですが、何か意味があるのでしょうか?

if ( /%[^%]*?%/g ) { ・・・ }



111 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 23:57:19 ]
試してないけど、マッチ情報の取得とかで変わるんじゃない?


112 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 01:44:45 ]
if じゃなくて while の条件式じゃないのかな。

113 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 11:38:43 ]
言われてみれば確かに if で g を使うのは変だよな。while ならともかく。
たぶん、ついうっかりやってしまただけだろ。特に意味など無いと思うよ。

114 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 11:57:42 ]
Windows、ActivePerl5.8.8 です。
data1.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;

115 名前:デフォルトの名無しさん [2008/10/07(火) 12:46:41 ]
久し振りにPerl/Tkをやったら、すっかり忘れている。

116 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 12:48:52 ]
>>114
:crlf は、0x0A を出力する時に 0x0A → 0x0D, 0x0A という置換をする。
(入力時は、0x0D, 0x0A を 0x0A に置換する)
:raw は、何の変換もしない。

おそらく data1 が 0x0D, 0x0A なテキストで、これがそのまま無変換で読み込まれ、
出力する時に <0x0D> <0x0A> → <0x0D> <0x0D, 0x0A> と変換されている。

117 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 12:58:49 ]
>>116
なるほど、そういうカラクリですか
サンクス

118 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 14:18:44 ]
>>110-113
正規表現的にうっかりだろうけど、マッチがグローバルになる事を利用している場合もある。
マッチが保存された開始位置から始まり、(次のマッチの為に)開始位置を保存するようになる。

例.
perl -le '$_=q/012312345/; m/1/g; m/1/g; print join q/:/,$`,$&;'
0123:1

pos($_)= X; m/RE/g のように、マッチ開始位置を指定する手もある。

119 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:04:49 ]
>>111-113
>>118
サンクス
可能性としては、単なるうっかりか、次のマッチのために使っていたということっすね

120 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:17:13 ]
日本で一番Perlを操れる人は小飼弾氏ですか?



121 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:25:49 ]
小飼ってまだ生きてるの?

122 名前:デフォルトの名無しさん [2008/10/07(火) 18:38:21 ]
www.yahoo.co.jp/

↑こんなURL投稿でサイト名を取得して(タイトル内の<title>Yahoo! JAPAN</title>)を表示させるにはどうしたら良いですか?

Yahoo! JAPAN

123 名前:122 mailto:sage [2008/10/07(火) 18:39:41 ]
タイトルが無い場合はURL

124 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:46:44 ]
>>120
ちがうだろ


125 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:52:55 ]
>>122
支離滅裂

126 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:55:37 ]
www.aimix.jp/cgi/accsearch123.html
これを改造で良いのかな?

127 名前:デフォルトの名無しさん [2008/10/07(火) 19:33:55 ]
SLDやTLDを抽出するプログラムを書きたいのですが、
.co.jpがどうしても抽出できません。
誰か間違いを教えてくださると嬉しいです。
よろしくお願いします。

my $suuji;
$host = fff.co.jp;

if($host =~ /\.co\.jp$/){
$suuji = 10;
}else{
$suuji = 3333;
}

print $suuji;


128 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 19:42:29 ]
$host = fff.co.jp;
print $host, "\n";

裸のワードはなんたらなので文字列ならなんとかかんとか

129 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:39:27 ]
>>116を見て思ったのですが、"\n"="\x{0A}"ですか?

130 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:55:24 ]
そうです



131 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 21:02:20 ]
>>130
サンクス
一つ賢くなりました

132 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 21:29:48 ]
>>122
scraper

133 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 12:43:37 ]
CPANへの登録ってどういう基準?
便利でよくできてるものはどんどん登録された方がいいと思うけど、
これはえがいひとみたいのが、カスみたいのを登録しまくったら滅茶苦茶になるよね?


134 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 20:23:03 ]
おまえでも登録できる。
単に出来が悪くて抹消というのは聞いたことがない。
Perl の人達は一般に、コードの主観的有用性に基いた恣意的な判断を嫌う。
規制の例としては、名前空間に関する暗黙のコンベンションを読み取れない子が時折出現してはかわいそうなことになっているくらいか。

135 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 21:34:31 ]
packageとかperlってモジュール登録したバカな奴いたような気がする。
CPANテロ。

136 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:50:53 ]
文字列が全角ひらがなと全角スペースと半角スペースのみで
構成されているかどうか調べる正規表現が分かりません。
先輩方。よろしくお願い致します。



137 名前:デフォルトの名無しさん [2008/10/10(金) 00:13:44 ]
始めましてこんばんわ。
最近までCGIのソースを見て作ってきたのですが飽きてきたので他のものに
触れたいと思っているのですが皆さんはperlでどのようなことをしていますか?
自分はソフトウェアかネットワークプログラミングをやろうと思っているのですが
(というかそのぐらいしか知らないです。)皆さんの意見を参考にもし面白そうなの
があればやってみようと思ってます。
ただCGや音楽、ゲームはなしの方向でお願いします。

138 名前:デフォルトの名無しさん [2008/10/10(金) 00:22:17 ]
まず日本語のお勉強をしましょうね。

139 名前:デフォルトの名無しさん [2008/10/10(金) 01:36:24 ]
始めましてこんばんわ。
最近までCGIのソースを見たり、書いたりしてきたのですが飽きてきてしまったので
他のものにも触れてみようかなと思っているのですが皆さんはperlでどのようなことをしていますか?
自分はソフトウェアかネットワークプログラミングをやりたいと思っているのですが
皆さんの話を参考にもし面白そうなのがあればそれらも検討しようと思っております。
ただCGや音楽、ゲームはなしの方向でお願いします。
こんな感じでよろしいですか?

140 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 06:06:59 ]
日本語でおk



141 名前:デフォルトの名無しさん [2008/10/10(金) 09:13:09 ]
えぇ。いい加減もったいぶらず教えてください。
そんなに日本語変ですか。

142 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 09:30:14 ]
「ソフトウェア」の意味がわかってないので変てこになっているのか?

143 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 10:00:42 ]
何を始めたんだろうっていう疑問が、一行目でいきなり来るけどな。

144 名前:デフォルトの名無しさん [2008/10/10(金) 10:08:06 ]
>>141
ソフトウェアはソフトウェアプログラミングのことを言ってます。
>>143
そこは変換ミスなのでスルーしてください。
本当はその漢字が正しいと勘違いしていただけですが。

145 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 10:23:20 ]
>>144
> ソフトウェアはソフトウェアプログラミングのことを言ってます。

じゃあ、「ソフトウェアプログラミング」の中の「ソフトウェア」の意味は?


146 名前:デフォルトの名無しさん [2008/10/10(金) 10:47:54 ]
>>145
アプリケーションソフトなどのことじゃないのですか?

147 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 11:00:01 ]
アプリケーションソフトとは?
って話になるだろ・・・

148 名前:デフォルトの名無しさん [2008/10/10(金) 11:09:22 ]
>>147
そんなことを聞いてどうするつもりですか?
なぜあなたがそんなことを細かく聞いてくるのか自分には理解が出来ない
のですが?
ソフトウェアプログラミングのソフトウェアがアプリケーションソフト以外の
ものをさすならわかりますがそれで間違いないならこれ以上追及する意味が
ないと思うのですが?

149 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 11:16:22 ]
ソフトウェアをやりたい
アプリケーションソフトをやりたい
ってどういうことやねんってことでしょ

150 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 11:29:51 ]
じゃあ、インクリメンタルサーチ可能な全文検索システム作ってちょ。



151 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 11:33:45 ]
たぶん
「デスクトップアプリケーションを作りたい」
では・・・

152 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 11:38:46 ]
>>148
君がやりたい内容が理解できないから
掘り下げて聞いているのですよ。
ソフトウェアでもアプリケーションソフトでも、意味が広すぎる

153 名前:デフォルトの名無しさん [2008/10/10(金) 11:47:51 ]
自分が聞きたいのはソフトウェアプログラミングの内容ではなくて
皆さんがperlでどんなことをやってるかなのですが・・・?

154 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 11:58:13 ]
いろいろ

155 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 12:01:47 ]
オナヌー

156 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 12:08:17 ]
>>153
「どんなこと」も広すぎるから、方向性を絞り込む為に「やりたいこと」を参考にしたいのだが
そのやりたいこともよくわからないので掘り下げてみた

エロ動画サンプルを自動巡回DLオススメ

157 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 12:19:58 ]
あとはエロ画像の重複チェックとかかな。
md5ハッシュとファイルサイズを持っておいて、この2つでチェックすれば
まぁほぼ確実な精度で重複する画像が見つけられるだろう。

158 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 12:27:14 ]
・エロ画像巡回収集、サムネイル生成、整理
・エロ動画巡回収集、解凍、整理

自分の場合はこんな感じ。いつも思うことだけどPerlの用途は幅広いね。

159 名前:デフォルトの名無しさん [2008/10/10(金) 13:20:15 ]
それPlaggerでできるよ!

160 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 13:38:48 ]
エロは偉大だなw



161 名前:デフォルトの名無しさん [2008/10/10(金) 14:00:04 ]
Perlだと2ちゃんブラウザとかトリップ解析とか人工無脳とか作った

162 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 14:02:18 ]
自宅でgoogleを作った

163 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 14:03:22 ]
なんだそれは

164 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 14:43:01 ]
実行環境のIPとSubnet Maskを取得する方法を
教えてください。

ifconfig/ipconfigで調べることはできるんですが、
ひょっとするとモジュールがあるかも、と思いました。
ググったら、Net::Netmaskモジュールを見つけたんですが、
これは違いました。




わかるような情報を


165 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 14:48:32 ]
>>163
おっと、「自宅でgoogle」を作った。な。

ウェブブラウザのアクセス追跡やその他SBMや優秀なリンクリスト系ブログから
URLをかき集めてクロリングクロリング。ず〜っと16KB/secのバンド幅でかき集め
続けている。




166 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 14:52:39 ]
>>164
つNet::Interface

167 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 14:53:24 ]
>>164
ええと…… 言周 言周 言周 ……Net::Interfaceはちがう?

168 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 16:38:13 ]
Perol

169 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 16:47:44 ]
オマエらこういう質問に無視しないでマジメに答えてやれよ。

>>136
^(?:\x82[\x9F-\xF1]|\x81[\x4A\x4B\x54\x55]|\x20|\x81\x40)+$
これでどうだろうか?
でも、スペースがあると何かと厄介だよな。
フォームとかで使う事を考えると、スペース削除して目的達成できるなら
事前に半角全角スペース全削除して平仮名だけチェックするのがイイと思う。



170 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 16:57:45 ]
>>169
> オマエらこういう質問に無視しないでマジメに答えてやれよ。

自分は人々より高い位置にいるという自己認識を露わにしながら
出現する人ってなんなの?



171 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 17:19:30 ]
「マジメに答えてやれよ」ってのは、皆答えることができるってのが前提だから、
別に自分を「人々より高い位置にいる」とは認識してないのでは。

誰も答え「られない」が、俺だけは答え「られる」って構図を出してきたんなら、
まぁ、確かにそういう気位を感じなくもないが。

172 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 17:25:33 ]
本当に質問に答える気なら、まず最初に「エンコーディングは?」って
質問返ししなきゃならんし、面倒臭いしスルーしてた。
文字コードSJIS決めつけで答えてるし、どっかのページのコピペでしょ。
もしかしたら、質問者本人の煽りレスかもね。



173 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 17:26:17 ]
>>169
司令官が出現しました!!

174 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 17:51:42 ]
unicode文字列にデコードされている前提で、

/^[  \p{Hiragana}]+$/

でいいんじゃね?

'['のあとの2文字は半角スペースと全角スペース。

175 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 20:27:16 ]
プログラミングPerlって2000年発行でちょっと古い気がするのですが、それでも買いですか?

176 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 20:55:28 ]
即答かコード一行書いて終わりみたいな質問なら答えやすいよね。

>>175
買って損はない

177 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 20:58:11 ]
>>176
サンクス
買ってみます

178 名前:デフォルトの名無しさん [2008/10/10(金) 21:16:28 ]
>>177
バージョン5.6がベースだからunicodeとスレッド関係は要注意。
この2つは5.8以降で互換性が無くなってるからあくまで参考に留めるべし。
5.8以降のunicodeの扱いはwebで検索した方が良い。

179 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 21:27:50 ]
>>178
了解しました

180 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 21:50:48 ]
175の人は「perldocがあるからラクダ要らない」説もあることを頭に入れとくといいかもしれないよ。

自分は2002年にラクダ和訳が出てすぐ「欲しかったから」買ったんだけど
純粋に実用面だけを考えたら、他人に「買って損はない」とまでは言えないな。



181 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 00:07:45 ]
2ちゃんねるがあればマニュアル本を買う必要は無いだろ

182 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 01:53:16 ]
>>180のオススメのPerlの本は何?

183 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 02:01:32 ]
本は要らない

184 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 09:06:11 ]
プログラミングPerlよりPerlクックブックの方が役に立つと思う。

185 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 09:17:50 ]
今プログラミングPerl久しぶりに開いてみたら・・・

訳出作業に使用した作業環境
IBM ThinkPad 535(Pen120MHz 40MB HDD2GB)
FreeBSD2.2.1+PAO Mule2.3


186 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 09:23:21 ]
元々料理本はラクダの一部じゃん。
だから、説明に欠落がある。

187 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 15:46:11 ]
>>137
ソフトウェアってのはハードウエアではないあらゆるものを指すわけで、あなたが飽きてきたっていう
「CGIプログラム」だってソフトウエアです。家電のプリント基板に入っている組み込み系もソフト
ウエアですし。だからみんな「ソフトウエアがやりたい」って、何がやりたいの? と訊いてる訳です。
…てなことは説明しなくてもわかって欲しいのですが。
Windows上で動くGUIなプログラムのことなんですかね…。perlでも書けなくもないですね。
でも結局WinAPIをいじるから、そっちの知識がないと書けないですし。VBやVCという言語がある
ってことくらいは知っててもいいと思います。なでしこってのもあるよ。
そもそも、プログラムの形態とか言語についてあれこれいう前に、作ったプログラムで何がやりたいか、
を具体的にイメージできないと、モチベーションを維持するのは難しいと思います。私の経験上
そうです。何か作りたいものがあって取り組むのが一番上達が早いです。
私はCGI屋なんで、その立場から言わせてもらうと、CGIだっていつまでも奥が深くて、飽きるなんて
ことはないですよ。できることはたくさんあるし、やりたいことも尽きません。


188 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 16:29:55 ]
ネタに亀レス(w

189 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 17:31:11 ]
なんだこの珍問答

190 名前:デフォルトの名無しさん [2008/10/11(土) 17:48:10 ]
どうかおめこ干しを



191 名前:デフォルトの名無しさん [2008/10/12(日) 22:15:11 ]
>>187
ということはプログラムのほとんど、またはすべてはソフトウェア
プログラミングということでしょうか?もしそうなら皆さんごめんなさい。
確かにそれなら自分の質問に答える前につっこまれるのが普通だと思います。
それとCGIですごい大きいものを作ったわけでもないのに飽きたと言ったのは偉そうに
言い過ぎました。すみません。
自分が言っているソフトウェアプログラミングはメモ帳やエクセルなどの
デスクトップアプリケーションのことです。
自分がまだプログラムを始めたての頃、作りたかったのがCGIというかチャットや掲示板だったんです。
プログラムを始めた時は頭が今よりも悪く(今もよくないですが)学校が忙しいのもありましたが
意味不明なことをしていて結局CGIに取り掛かるのに1年かかってしまいました。
ただ作ってみたら結構簡単だし同じような処理が多いので楽しいよりめんどくさい
の気持ちが強くなってしまい他の作ってみたいなという気持ちが出てきたので
前の質問に至りました。
ただ自分はパソコン歴自体長くなく知らないことも多いので
もしかしたらすごい楽しいCGIのプログラミングがあるのかもしれませんね。
検索サイトやデータベースはあまり興味ないですが。
長々とすみません。

192 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 22:25:09 ]
アルファがベータをカッパらったらイプシロンした

まで読んだ。

193 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 06:14:15 ]
>>191
まず周囲の空気を読む事から覚えろw

194 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 08:27:19 ]
>191
用語や用法のミスはあまり問題ではない。
まずは相手に伝える努力をしろよ。

195 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 09:33:28 ]
>>194
> 用語や用法のミスはあまり問題ではない。

用語や用法の決めつけをあらゆるレベルでやっているのを見て、
みんな真面目に対応するのをやめたのだと思う。



196 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 10:59:33 ]
入門書くらい読め

197 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 12:32:51 ]
>>196
結局それに尽きる


198 名前:デフォルトの名無しさん [2008/10/13(月) 15:09:20 ]
>>193 >>195
まったくそのとおりです。
>>196
確かに前に読んだ本に書いてあったような気がします。

199 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 18:03:06 ]
>>175
いわゆるラクダ本はPerlを基軸言語にしたいというやつ以外、不要。
内容的に古いし、プログラミングの基本が学べるわけでもない。
そんなもんに金と時間使うなら、自分本来の得意分野を伸ばすことに時間を使え。

どうしてもってなら下巻だけ買っとけ。

200 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 20:41:17 ]
リャマ本と続リャマ(動物の名前忘れた)は、単純に読み物として楽しめた。



201 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 21:33:58 ]
>>200
アルパカな
>単純に読み物として楽しめた。
たしかにそうだが正直なところ
ああいう欧米系ジョークを交える書き方は
日本人には難しそうだ

202 名前:デフォルトの名無しさん [2008/10/13(月) 22:20:19 ]
>>201
確かに。

-------------------------
C++をを設計したストラウストラップの教本
  ↓
smalltalkの「メッセージ」を真似して「std::cout << "Hello, world!" 」なんて書けるようにしました。てへ。
  ↓
<< がCのビット演算子とかぶってるって?
しかも厳密な意味では演算子オーバロードですら無いって?
知ったこっちゃないね。重要なのは「メッセージ」だって言ってるだろ!
  ↓
最初の10数ページ以降「メッセージ」の概念が無くなってるって?
あーいいのいいの。これオブジェクト指向とやらを無理矢理実装した俺様仕様だからさ。気にすんなって。
-------------------------

おいらがC++を見限ったのは、このお笑いのツボが理解できなかったからだとさ。

203 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 22:24:33 ]
リャマ本の第5版って翻訳されないのかな?

204 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 04:10:35 ]
最近データーベースの勉強をしてるんだが、
perlのソースコードを一行一行、一行づつ全部
データーベースに格納したら面白いかな?
と考えたんだが、どうだろうか?

205 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 05:27:51 ]
>>204
ストラウストラップ教本 の方がまだ面白い

206 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 06:11:35 ]
google code search以上の物が出来るとは到底思えない

207 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 09:55:11 ]
>>204
インクリメンタルに検索できるやつにしてね。


208 名前:164 mailto:sage [2008/10/14(火) 13:48:50 ]
>>166>>167
レス、ありがとうございます。
モジュール名を聞くとド真ん中な感じですが、
自分では見つけられませんでした。。。

Net::InterfaceモジュールをCPANからダウンロード
して試してみました。

常用しているActivePerl5.8@Winにインストール
しようとしたところ、残念ながらうまくいきませんでした。
ちょっとソース(siteconf)を覗いたんですが、どうやら
UNIX系専用のようですね。超残念。

別環境として、Perl5.6@UNIX系もありましたので、
そこでインストールしてみると、ちゃんとインストール
できました。
スクリプトを書いて動作確認したところ、たしかに
期待どおりの情報(IP、Subnet Mask、MACアドレス)を
取得することができました。

本稼働はUNIX系で行うつもりだったので、これで
充分ではあるのですが、できればWindows環境でも
実行したいです。

Windows環境で同様の情報を取得する方法は
ないでしょうか?




209 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 14:01:48 ]
Net::Ifconfig::Wrapper - provides a unified way to configure network interfaces on FreeBSD, OpenBSD, Solaris, Linux, OS X, and WinNT (from Win2K).

はどうかな。説明文を読む限りでは使えそうだが試したことはない。

210 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:25:58 ]
XMLをあつかいたくて

use XML::Tidy;
my $tidy = XML::Tidy->new($_);

とやっております。
このとき、不完全なXMLのときは、mismatchエラーが発生しますが、
これを無視して、可能な限りXMLを解釈して読み込むことはできないのでしょうか?

バージョンは
perl : v5.8.8
XML::Parser : 2.34
XML::Tidy : 1.2.54HJnFa
です。




211 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:41:55 ]
XML::Tidyじゃなくなるけど、
XML::Liberal+XML::LibXMLなんて組み合わせは?

212 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 23:18:27 ]
>>211
ありがとうございます。
試してみます。

213 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 12:54:22 ]
古いPerlのコードで
&jcode'convert(*title,'jis');
というコードがあったんですが、これってどういう意味ですか。
&jcodeのあとの「'」がわかりません。

214 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 12:59:01 ]
>>213
www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html

> 古いパッケージ区切り子はシングルクォートでしたが、
> 現在はダブルコロンを使うのが推奨されています。

> 古い構文も互換性のためにまだサポートされているので、
> "This is $owner's house"のようにすることもできます。
> これは$owner::sをアクセスします。

215 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 15:14:35 ]
>>210
それがDOMを構築しようとするものなら、
エラーが出るのはどうしようもないのでは。

かわりにSAX系のパーサーを使えば?
XML::Parserとか。
それなりにめんどくなりそうだけど。

216 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 16:47:01 ]
pc11.2ch.net/test/read.cgi/prog/1221545019/168
この人小学生からperlやってるってよ

217 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 18:05:05 ]
>>214
さんくす
Perlの古い書き方だったんですね

218 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 20:12:37 ]
Perlに古いも新しいもない。

219 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:21:12 ]
そうですね。
>>217で書いてるのはPerlの書き方が古いか新しいかですけどね。

220 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:57:28 ]
律儀な人ね



221 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:04:15 ]
クロージャーって意味がわからんな
カンタンに説明してくれないか?

222 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 03:29:24 ]
自分で調べようともしないお前に誰が教えるもんか!

223 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 03:41:29 ]
無名の関数ですね^^

224 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 12:54:52 ]
>>221
エロ画像フォルダで実感しろ。…普通に 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 ;

225 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 12:55:36 ]
>>223
違うとマジレス。

ちゃんとした説明はなかなか大変だよなー。

226 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 14:09:39 ]
>>221
www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq7.html#what_s_a_closure

227 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 19:05:02 ]
スカラー変数の中身の種類(文字列とか、配列のリファレンスとか)を
調べるにはどうしたらいいですか?

228 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 19:11:14 ]
ref

229 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 19:13:16 ]
>>227
ref

230 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 19:22:50 ]
>>228-229
サンクス



231 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:30:11 ]
モジュールのバージョンをまとめて上げたら
MechanizeでBASIC認証がなぜか出来なくなった…
UserAgentオーバーライドしてもcredentialsでもだめ
id:pass@hoge.com/とかやると繋がるけど…
何が悪いんだろう…
同じような人が居たらヒントでもいいんで教えてもらえると有難いです。。

232 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:36:23 ]
>>231
デバッグフラグ立てて動作トレース

233 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:48:51 ]
>>232
ありがとうございます。
やってみます。m(_ _)m

234 名前:231 mailto:∧||∧sage [2008/10/18(土) 00:02:44 ]
Basic.pmで初期化されていない値云々というメッセージがでるので
LWP/Authen/Basic.pmのauth_headerにある「$user, $pass」に
試しに値を入れてみたら問題なく繋がった
LWPでauthorization_basicを試してみたら此方も問題なく成功
Mechanizeでもauthorization_basicを呼び出すようにしたら此方も成功

吊ってきます…

235 名前:デフォルトの名無しさん [2008/10/18(土) 11:04:50 ]
Linux 上で MS word の *.doc ファイルを読み出したいんですが、何かいい方法はありますか。
Spreadsheet::ParseExcel みたいなのがないかと CPAN を探したのですが、見当たりません。

236 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 11:39:28 ]
『LinuxでWord文書をテキストファイルに変換するには』
ttp://www.atmarkit.co.jp/flinux/rensai/linuxtips/943wvware.html

Antiword is a free MS Word reader
www.winfield.demon.nl/

OpenOffice.org
ja.openoffice.org/

237 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 06:50:02 ]
>>236
有難うございます。やはり、perl から呼べるものはないようですね。
文書全体の読み出しだけでなく、「XXページにXXX があったら、XX+n ページに対応するXXXXがあるかチェックする」といった処理もできれば、
と思っていたのですが。それにしても Spreadsheet::ParseExcel は偉大だ…

238 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 07:26:47 ]
ハッシュが詰まった配列から、一つずつ取り出して各々に処理をしたいんですがforeachじゃ出来ませんでした。
何か良い方法ありますか?

239 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 12:05:47 ]
while each

240 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 12:11:04 ]
foreachで出来るだろ?



241 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 12:27:00 ]
>>238
そういう意味じゃないんです…

>>240
foreach %hoge (@fuga)としたら、syntax error at Z:\script\test.pl line 9, near "foreach %hogeって言われました

242 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 12:36:10 ]
foreach $hash_ref (@foo) {
$hash_ref->{bar}
}

243 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 12:40:57 ]
それは…リファレンスですか?
試してみたら通りました。回答ありがとうございました

244 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 12:43:16 ]
そもそも「ハッシュが詰まった配列」と君が呼んでいるものの正体が
「ハッシュのリファレンスが詰まった配列」だから。
foreachで一つ一つ取り出す時も、当然それをリファレンスとして扱わなきゃダメ。

245 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 12:50:50 ]
……難しいorz
適当に入門サイト眺めただけだとやっぱり駄目ですね、今度らくだ本買ってじっくり読むことにします

246 名前:質問 [2008/10/19(日) 16:56:31 ]
ファイルに書き込まれている特定の文字列(ABC数字)を抽出するにあたってよい方法はありますか?

・取得したい文字列の例は、ABC+数字で構成される たとえばABC11やABC2543など
・ファイルによっては行数が異なる。
・各行に取得したい文字列は0個以上ある。
・各行で、取得したい文字列が位置する場所はさまざま。(先頭にあったり、途中にあったり、)



247 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 17:00:19 ]
>>245
本も良いがまずは perldoc に当たる習慣を付けた方がいい。
メジャーなドキュメントなら和訳も web を探せばある。

ttp://perldoc.jp/docs/

ttp://fleur.hio.jp/perldoc/

ttp://homepage3.nifty.com/hippo2000/perltips/index.htm


248 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 17:10:30 ]
>>246
ふつうに1行ずつ読んでパターンマッチして切り出していけばいいだけ。

249 名前:質問 [2008/10/19(日) 17:20:17 ]
>>248
各行に0〜数個(決まりはないけど最大10程度)あるので・・
if($_=~/ABC(\d+))/)
なら1つは取得できても、その他の文字列をどうやって取得すればいいのか・・

ファイルの例)
マツダ スバル
ABC111 ABC23 トヨタ
日産 本田 ABC2222


↑ここからABCxxxの文字列だけ抽出したい

250 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 17:26:11 ]
>>249
マニュアル見れ



251 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 17:27:06 ]
>>249
必要な数だけパターンマッチして切り出していけばいいだけ。

252 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 18:32:45 ]
マニュアル読まないヤツ大杉

>>241
>foreach %hoge (@fuga)
こんな無茶な構文あり得ないだろ

>>249
パターンマッチのオプションを調べれ

253 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 20:46:49 ]
>>249
# 一行ヒント野郎
perl -nle "$, = ' '; print $., /ABC\d+/g" < ファイル名

254 名前:デフォルトの名無しさん [2008/10/21(火) 23:09:08 ]
いくつか教えてください。
Perlでブログ(RSSつき)みたいな機能って作れますか?
あと家計簿なんかも作れますか?

今勉強中なんですが、目標が無いと挫折しそうなんです(^^;)

255 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 23:10:53 ]
>>254
おまえならやれる。

256 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 23:29:51 ]
Perl単体じゃあ家計簿は無理じゃない?
Perl/Tk使うのかな。

257 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 23:56:14 ]
>>256
っ[Web]

258 名前:デフォルトの名無しさん [2008/10/22(水) 00:32:22 ]
PerlMagickを使って画像を編集したいのですが、
$image_dataに画像データが入っていて、それを読み込み/編集/書き込みたい場合はどうやったらいいのでしょうか?
$image->Read($image_data);
$image->Flip;
$image->Write($image_data);
のようなことです。


259 名前:258 mailto:sage [2008/10/22(水) 00:53:16 ]
↓で出来ました。スレ汚しすいませんでした。
my $image = Image::Magick->new(magick=>'gif');
$image->BlobToImage($image_data);
$image->Flip();
$image_data = $image->ImageToBlob();


260 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 13:06:56 ]
家計簿なんてExcelでいいじゃん



261 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 00:28:09 ]
>>256
> Perl単体じゃあ家計簿は無理じゃない?

確かにそうだな。まともなシェルが必要だ。

262 名前:デフォルトの名無しさん [2008/10/23(木) 01:44:57 ]
>>260
俺も最初そう思ったんだが、Excelは結局馬鹿だし、Excel用アドイン作ってる連中も馬鹿だから以下のようにした。

・入力はExcel
・Perl+Spreadsheet::ParseExceでウハウハ
・Perlで計算
・Perl+LaTeX系モジュールで帳票自動生成&改ページ自動編集&印刷

これで8年くらい確定申告の提出書類を作成してる。
いまだに国税庁のマルサは来ない。
まー奴らは俺みたいな貧乏人はスルーしてるだけだがw

263 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 20:36:56 ]
www.google.com/trends?q=ruby%2Cperl%2Cpython&ctab=0&geo=all&date=all&sort=0

pythonにも負けてる(藁

264 名前:デフォルトの名無しさん [2008/10/24(金) 14:43:04 ]
PerlでCのプリプロセッサのように#ifdefでコンパイルするコードを切り替えたりとかってできませんか?

265 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 14:50:59 ]
>>264
できる


266 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 14:58:18 ]
>>264
つ-Pオプション

でもいろいろ問題あるから使わないほうがいいよ。
最終的に何をしたいのかわからないが、たいてい
使わないでできるもっといい方法がある。

267 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 23:33:04 ]
perlでアパッチのアクセスログを振り分けるってできる?

268 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 23:35:36 ]
きみの能力しだい。

269 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 23:38:16 ]
>>267
もちろんできる。できない理由はない。


270 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 23:45:05 ]
おまえらにやらせようと思ったんだけど、コード書く?



271 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:24:17 ]
>>270
そういうときは、報酬も書いておくと話が早く進むぞ。


272 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:59:01 ]
じゃあ1円

273 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 07:03:27 ]
進まねぇよ

274 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 14:56:52 ]
Perlで線形リストのようなデータの持ち方をしたいのですが、
どうすればいいでしょうか?
a->b,c a->b->d,e a->c->f,g
のような感じです

275 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 16:02:27 ]
リファレンス使えばいいのでは?

276 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 16:17:22 ]
あるいは古式ゆかしく配列を使うか


277 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 22:40:17 ]
UNIXマシンからとある機器arielに対してtelnetセッション
をはりっぱにし、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";
}

278 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 23:08:28 ]
>>277
とりあえずNet::Telnet使えば?

279 名前: ◆TWARamEjuA mailto:sage [2008/10/25(土) 23:10:30 ]
cronで5分ごとに\nを送信してあげる別プロセスを作っておく。

280 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 23:49:42 ]
レスあんがあちょです

>>278
Net::telnetは

 @result = $telnet->cmd("ls -l");

の様な使用例しか無いので、>>277のケースではどうかなーって思って

>>279
別プロセスでなく、同一セッション中で"\n"送らないとダメな気がします
って、んん?別プロから何かシグナルをこのプロセスに対して5分間隔
送ればいいのかぁーー!? そんなのできるんかな、調べてみよう



281 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 23:56:55 ]
>>280
シグナルハンドリングを知っているなら、alarmで起こせばいいだろ。

282 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 00:29:26 ]
>>281
おおっ!何と言うことでしょう。
なんだか出来そうな予感がしてまいりました。
月曜に会社行くのが楽しみになってきた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;      # アラーム再設定
}



283 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 15:29:24 ]
手元のIMAP鯖からGMailにメールを引っ越すスクリプトを書いてます。

Mail::IMAPClientベースで書いていたのですが、

$from->migrate($to, "ALL", "OUTBOX") or die "Could not migrate: $@ \n";
この行で手元サーバからGMailへメールを移行しようとしても、移行できていないようです。
$from は 手元サーバ, $to はGMailです。GMailへの接続login自体はうまくいっているようです。
OUTBOXラベルはGMail側で作って、IMAPから見えるように設定済みです。

アドバイスいただけますでしょうか?

284 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:12:50 ]
>>283
自己解決。migrateを使うのを諦めて、appendとfetchで処理しました。
お騒がせスマソ。

285 名前:デフォルトの名無しさん [2008/10/26(日) 17:43:20 ]
通常、文字列の頭から適用される正規表現を後ろから見る方法はないでしょうか?

例えば、以下のように行った場合、
---------------------
my $str = 'a b c d';
$str =~ s/ //;
---------------------
a直後のスペースが消えますが、cの後ろのスペースを消すような正規表現は出来ないでしょうか?
abcdといった文字列は可変です。
事前に文字列を反転させるしか思い浮かばないのですが他に方法はあるのでしょうか?

宜しくお願いします。


286 名前:デフォルトの名無しさん [2008/10/26(日) 17:45:23 ]
$str =~ s/(.*) /\1/;

287 名前:デフォルトの名無しさん [2008/10/26(日) 20:37:58 ]
>>286
ありがとうございます!!

288 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:12:37 ]
Perl のオブジェクト指向がなんだか無理矢理って感じで、
直感的じゃなくて困っています。Pythonにしとけばよかた。

289 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:30:10 ]
>>288
うん、とっととPerlのことを忘れてPythonに移れ。

290 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:37:36 ]
おれなら、
$str=~/ ([^ ]*?)$/$1/;

どっちでもいいんだけど、>>286と比較したら
どっちの効率がいいんだろう?



291 名前:デフォルトの名無しさん [2008/10/27(月) 16:00:31 ]
A.cgiにAformからアクセスしたときと、Bformからアクセスしたときで処理内容を変えるようなプログラムにするにはどうしたらいいですか?
Aから来たときはロケーション無し、Bからなら有り のような感じにしたいのですが

292 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:06:30 ]
リファラー見るとかhiddenで何か持たせるとかボタン名変えるとか

293 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:28:05 ]
>>291
次のどっちかで区別できる。
環境変数HTTP_REFERER
INPUT(TYPE=HIDDEN)要素


でもこれ、Perlの質問じゃないのでスレ違い。
Web系のとこにいけ。

294 名前:デフォルトの名無しさん [2008/10/27(月) 17:06:45 ]
>>292-293
ありがとう、試してみます
そして、移動してログよんできます
ごめん

295 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 22:05:58 ]
$str =~ s/ (?=[^ ]*$)//;
とか

296 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 09:09:50 ]
>>295
先読みアサーションか。そういえばあったなー。
新しいせいか慣れないせいか、オレはどうしても忘れがち。

297 名前:デフォルトの名無しさん [2008/10/28(火) 16:53:15 ]
質問です。
クラスA
クラスB
それぞれのオブジェクト指向モジュールがあったとします。
なかでの処理には変数が英数をチェックしたり文字数チェックしたりでエラーを
だすようにしるとします。

で、問題は英数や文字数をチェックするルーチンはどう実装するのが理想でしょうか?
簡単なルーチンだからそれぞれのクラスにサブルーチンとして最後の行にでも書いておけ!
っていうことでもいいでしょうか?

298 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:56:07 ]
日本語で

299 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 20:45:57 ]
>>297
fleur.hio.jp/perldoc/mix/pod/perlboot.ja.html
perldoc.jp/docs/perl/5.8.8/perlmod.pod
perldoc.jp/docs/perl/5.10.0/perltoot.pod
>>2

300 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:19:11 ]
Tripletailを使用しています。
下記のように前のページから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;
}





301 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:39:13 ]
TripletaiLは使ったことないが、「うまく行きません」とやらの詳細を書くべきだな。

302 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:45:21 ]
>>301
ああ、ごめんなさい。

通常、Tripletailを使用せずにPOSTデータを取得する場合、
use CGI;
$cgi = CGI::new();
$data1 = $cgi->param('p_data1');

これで取得はできますが、
上記の sub mainの中で取得しようとすると、
取得できないようです。

まだわかりにくい説明かもしれませんが、お願いします。

303 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 00:40:51 ]
webprog池

304 名前:デフォルトの名無しさん [2008/10/29(水) 01:18:30 ]
>>299
ありがとうございました。そのものずばりの参考ページのようです。
がんばって吸収したいと思います。

305 名前:デフォルトの名無しさん [2008/10/29(水) 02:18:09 ]
>>304
> ありがとうございました。そのものずばりの参考ページのようです。

Perlの添付ドキュメントだけどな。おまえのPCにも入っているはず。


306 名前:デフォルトの名無しさん [2008/10/29(水) 17:52:59 ]
use strict しているコードで $a $b を未宣言で使おうとしてもエラーにならないんだけど、どうして?

307 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 18:02:12 ]
$a $bはsortブロックで使われる定義済みの特殊変数だから。

308 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 23:43:20 ]
utf8で保存できるエディタで、使いやすいものがありましたら、
教えてくれると、大変助かります。

309 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 23:55:58 ]
>>308
emacs または meadow


310 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 23:56:23 ]
OSは?



311 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 00:07:23 ]
板違いすぎるだろ…

312 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 15:06:35 ]
>>308
Notepad++

313 名前:デフォルトの名無しさん [2008/11/02(日) 13:55:18 ]
質問です。まだイブジェクト指向は新米なんですが、

継承とかの説明をみるに、継承のスパゲッティになりそうな 気がするんですが
その辺はエキスパートの実際ってどうなんでしょうか?




314 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 14:00:30 ]
>>313
質問してないでソースコード読め。

315 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 18:17:25 ]
イブジェクト指向

316 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 18:21:46 ]
英語でいうと、 ibject oriented

317 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 19:05:20 ]
イブジェマスジー?

318 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 19:45:14 ]
オブイェークト指向

319 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 23:19:24 ]
学校に

「CGI/Perl リファレンス」

こういう本があるんですがこの2つって同じようなもんなんですか?
CGI=掲示板 Perl=通信 ってイメージがあるんですが

320 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 23:28:09 ]
>>319
ja.wikipedia.org/wiki/Common_Gateway_Interface
ja.wikipedia.org/wiki/Perl



321 名前:デフォルトの名無しさん [2008/11/02(日) 23:47:14 ]
perlで指定したURLのファイルをダウンロードするにはどうすればいいんですか?

system関数を使わないで実現したいです

322 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 23:57:19 ]
LWP::UserAgent

323 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 00:27:35 ]
>>321
URI::Fetch

324 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:02:59 ]
>>306
なぜエラーにならなければならないの?

325 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:04:53 ]
>>313
他言語同様、継承はなるべく使わない方向で。
他言語での経験があるなら無問題。

326 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:07:45 ]
>>319
CGIがPerlで書かれたものとは限らない
ていうかCGIとPerlじゃ比べる次元が違う
とりあえずページめくれよ

327 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:08:47 ]
>>321
CPAN LWP::Simple検索してサンプル試してみ

328 名前:デフォルトの名無しさん [2008/11/03(月) 23:12:57 ]
ActivePerl 5.8.8を使ってます。PPMはGUIになったやつです。

PPMでリポジトリを追加したら、フリーズして、そのまま動かなくなりました。
追加したリポジトリは ppm.tcool.org/archives/ です。
何度起動しても、起動時にフリーズします。
多分追加したリポジトリを読みに行ってる時に固まってるんだと思います。
どうやったらこのリポジトリを削除できるでしょうか。
C:\Perlの中のどこかにリポジトリのURLが保存されてて、それを消したら良いんじゃないかと考えたんですが
フォルダ内をGREPしてもURLは見つかりませんでした・・・。



329 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:38:30 ]
C:\Documents and Settings\(user)\Local Settings\Application Data\ActiveState\ActivePerl\(build version)\
以下の、ppm〜なんちゃら.dbファイルを消す。

ってか、DOS窓からコマンドライン用のppmでやればいい。C:\Perl\htmlにマニュアルもあることだし。

330 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:36:33 ]
>>392
ありがとうございます。
言われて気づいてみたら、ppm-shellってのがあるんですね。
最近のActivePerlはGUI版PPMしか無いのかと思ってました。




331 名前:デフォルトの名無しさん [2008/11/07(金) 18:37:21 ]
ActivePerlをインストールし、perlを採用したプログラミング入門書を見ながらやっているのですが、
ファイルを開くと一応コマンドプロンプトが起動し、実行されるのですが一瞬で消えてしまいます。

最初は、
print"やあ世界!\n;"

exit;
としか書いてなくて、一瞬で終わっちゃうからだなと思い(一瞬ですがやあ世界という表示はされてました)、
入門書の例文にあった
print"名前を入力してください。\n";
$onamae=<STDIN>;
chop $onamae;
print"\n";
print"あなたのお名前は$onamaeさんです。\n;
print"$onamaeさんこんにちは。";
exit;
という内容のファイルを作ってみました。
しかし、名前を打ち込むスキもなく終了してしまいます。

エスパーにしか答えようがない質問かもしれませんが宜しくお願いします。
OSはXPで、入門書は2000年頃の古いものです。

332 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:48:53 ]
>>331
まさかファイルをエクスプローラ上でクリックして動かしてる?
それじゃダメだ
まずコマンドプロンプトを起動してそこで

C:\> perl [ ファイル名 ] [ RETURN ]

で実行しないと

333 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:55:09 ]
>>331
定番の入門書リャマ本
ttp://www.oreilly.co.jp/books/4873111269/


334 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:55:48 ]
>>332
ありがとうございます。
さきほどwww.site-cooler.com/kwl/perl/を読んでやってみたら色々できました。
さっきの二番目の例文はなにかミスってるみたいでエラーがなんとかって英文で返されてしまいましたが。

なんだこの本・・・大事なことが書いてない。

335 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:57:34 ]
>>333
ありがとうございます。
また何かつっかえたら買い換えますw

336 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 19:11:31 ]
今は21世紀だぜ?なんでまた20世紀の古い本を・・・

337 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 21:14:29 ]
>>336
じゃあ、2008年6月発売のを

oreilly.com/catalog/9780596520106/

338 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 01:45:17 ]
>>331
>print"あなたのお名前は$onamaeさんです。\n;
文字列を閉じてない。「\n」の後に「"」が必要。

ところで、文字列のクォートにはqq{}もおすすめ。

339 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 17:11:08 ]
質問です。

my %hash = @arr;
$hash{'SendTE'} = 0;
@arr = %hash;

ハッシュのように扱われてる特殊な配列に
重複しないキーを与えるには上記のように
書いていました。
これを一発で書くにはどう書けばいいでしょうか?
(配列をハッシュのように扱いたい。)

340 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 00:51:07 ]
for(my i=0; i<@arr;i+=2){ $arr[$i+1] = 0 if $arr[$i] eq 'SendTE' }



341 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 08:02:11 ]
>>339
普通に
my %hash = ( @arr, 'SendTE' => 0 ) ;
じゃダメなのか?サブルーチンとかでの常套手段だけど?

sub hoge {
 my %hash= ( foo => 'bar', @_ ) ;
 return $hash{foo} ;
}
printf "%s\n", hoge( foo => 'foo' ) ;

342 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 08:37:45 ]
ハッシュにリストを代入するときキーに相当するところに同じ値が複数あると
どれが優先されるかは決まってたっけ?

%h = (a => 1, a=> 2);
print $h{a}

試せば今の処理系でどっちかはわかるけど、仕様としてマニュアル等に明記
されているかどうかを知りたい。


343 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 10:27:31 ]
マニュアル代読サービスに頼めよ

344 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 10:46:01 ]
>>342
programing perl のhashの説明、冒頭にそのまんまの記載があるじゃん。
my %h = ( a => 1, a=> 2 ) ;
は、以下のコードと同じ効果がある。
my %h = () ;
${a} = 1;
${a} = 2;
同じキーだと通用しないとでも思うのはあなたの勝手。



345 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:54:02 ]
>>342
上書きされるってことになるんだから()内がどっち向きに処理されるか考えりゃ良い

346 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 18:03:31 ]
いや、少なくとも考えて分かる類のものじゃないでしょ。

347 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 18:34:34 ]
@arrには、$arr[0] = 0 しか実行されないような気がするのですが、何故以下のような結果に
なるのでしょうか?

use Data::Dumper;

$i = 0;
$arr[$i] = $i++;

print Dumper \@arr; #=> [undef, 0]

348 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 19:20:11 ]
むかしPerlクイズで結城さんも混乱してたな。
俺のイメージでは、
= (代入するよー)
$i (右辺の$iは0だなー)
++($iをインクリメントするよー)
$arr[$i] ($arr[$i]に0代入するんだなー。$iはなんだろなー。1だなー)
ってことで、$arr[1]が0になる。

349 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 19:37:55 ]
俺なんかの説明じゃあれなので、Perlクイズの該当箇所のバックナンバー
ttp://archive.mag2.com/0000015670/19990811001000000.html?start=160

350 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 19:45:50 ]
>>348-349
d



351 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:03:53 ]
なるほどねぇ。クイズとしては面白けど、
そんなクソなコードは間違っても書かないから、どうでもいい。
まったく何の役にも立たないし、他の言語への応用も利かないムダ知識やん。

352 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:31:38 ]
>>344
perldataあたりざっと見てそれらしい記述を見つけられなかったのですが、
ラクダに書いてあるんなら仕様だと思っていいのかな。ありがとう。


353 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:37:06 ]
そもそも「ハッシュ」の意味が分かってないだろ?
分かってたらそんな疑問は持たないはず。

354 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:38:34 ]
>>351
クイズのリンク先を読むと仕様ではっきり決まってないってあたりまで
説明されてるのでそういうコードは書いちゃいけないというところまで
理解すれば無駄ではないと思うよ。

355 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:42:51 ]
更に考えると、そもそも重複したキーを配列に持つときにどれを優先したいか、って話だな。
だから実際には問題になることがない問題なのだ。

356 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:46:12 ]
>>353
リストを連想配列に変換するときにどれを優先するかなんて必ずしも自明じゃないだろ。

ごく自然な仕様として、
* 前を優先する
* 優先順位は決めない
の二つがある。

357 名前:デフォルトの名無しさん [2008/11/09(日) 21:07:04 ]
自明だよ。
* 最後を優先する
に決まってるだろ。
右辺側は順序を保持するリストなんだから。
これはLISPでも、Cのカンマ演算子でも同じ、「最終評価値」の概念。

お前さんは以下のような仕様だと嬉しいにか?
$a = 1;
$a = 2; # $aの値は 1 のまま

358 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:21:07 ]
バッドノウハウ地獄

359 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:23:45 ]
だがperlは常に信用できない。気持ち的に。

360 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:33:28 ]
そして今日もPythonやRubyの入門サイトをチラ見するけど本腰を入れることはない……



361 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:36:45 ]
>>357
後者はそのとおりだが。前者は全く自明じゃない。
変な思い込みをする癖は直した方がいいよ。

362 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:13:56 ]
>>361
( )の処理が右から左だと思う根拠は?

363 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:20:23 ]
日本語が通じないらしい

364 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:36:38 ]
左から右だという根拠を私は残念ながら知らないので勝手にそう思い込むのは危険
という主張です。根拠があるのなら示してもらえばそうでしたかで済みます。

もちろん右から左だという根拠も同じぐらいありません。



365 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:15:32 ]
つーか %hash = @rray ってときに、何か例外があるんじゃないかという畏れ。

366 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:22:58 ]
本来ならリストから連想配列への変換関数を使わないといけないところを、
ただの代入文で済ませてしまえる言語仕様が、諸悪の根源な気がする。

367 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:55:02 ]
諸悪の根源は、

「Perlはもうそろそろ終わり。Perlの経験を踏まえたあたらしいスクリプト言語へ
シフトしましょう……って、え? CGIってなに? あ、使うな!」

となってしまったこと。

368 名前:デフォルトの名無しさん [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')

馬鹿側が根拠を示すのも簡単だ。上記以外の結果を示せば良い。
馬鹿には無理だろうがな。

369 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 03:06:03 ]
いや、言語仕様と実装の話だよ。

370 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 06:31:49 ]
>>368
自尊心だけは十分育ってるようだから、次は知能と知識だね。
頑張って!



371 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 08:55:32 BE:141505128-PLT(54321)]
ネタだろ…

372 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 10:20:20 ]
まぁそういうことにしたいよな。

373 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 12:47:06 ]
__END__リテラルを含むfoo.plからexecを使うと
execしたプロセスが全部終了するまで
foo.plはロックされるものなのだろうか

374 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 13:34:04 ]
>>373
関係ないと思うよ

375 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 17:10:32 ]
>>349
現在の結城さんだったら把握してそうだけど。
>私が調べた限りでは、代入演算子の右と左でどちらを先に評価するかは、
>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

376 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 19:20:54 ]
>>374
__END__リテラルって意味わからんので、__DATA__セクションのことなんじゃないだろうか?

ただ、プロセス寿命の話なら、ちゃんとした仕様は
たぶんなくて、実装次第+環境次第だろと思う。
だいたい、UNIXとWindowsでかなり違うよな。

377 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 19:31:32 ]
>>376
ごめんリテラルじゃないね、セクションかトークンと言うべきだった。
うちの環境は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__削ったら上書きできた。
なにゆえなのか、よくわからない…

378 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 20:46:37 ]
>>375
初心者ですが、これは襲撃でした。
自然な思考法なら、perl4の結果を期待するのではないでしょうか?
(それは、初心者だけか)

379 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 20:47:15 ]
>>378
襲撃でなく、衝撃です。

380 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 21:09:12 BE:212256083-PLT(54321)]
襲撃wwww



381 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 21:35:40 ]
常識で判断しないのがperlプログラマーだ。
perlの全てを知ってるのが訓練されたperlプログラマーだ。

ほんとperlは地獄だぜ。HAHAHAHAHA

382 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 22:06:11 ]
perl -le '$i=0;$arr[$i++]=$i;print $arr[0]'
これは1なんだな。わけわかんね。

383 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 01:36:13 ]
perl = CGI

CGI = perl

384 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 07:33:41 ]
>>382 モチツケ


385 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 07:40:28 ]
初心者ですが、どこかのスレでperlの進化型が
ruby,pythonと言う説を見かけました。
これは本当と言えますか?

386 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 07:59:06 ]
もしそうなら引っ越す

387 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 08:46:36 ]
>>385
言える

388 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 09:10:17 ]
>>385
きれいなPerl=Ruby
Perlを捨てて0からシンプルかつ強力に作ったもの=Python

389 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 09:24:08 ]
>>385
解釈による。

オレ的には認めない。
「進化」ではないだろ。

390 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 09:31:33 ]
>>377
>__END__削ったら上書きできた。
もう一度落ち着いて、__END__セクションを追加してから
動作を確認するべき。




391 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:12:12 ]
つまり、
サルが進化したものが人間。
perl が進化したものがruby/python
そゆこと?

392 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:16:25 ]
>>391
> サルが進化したものが人間。
> perl が進化したものがruby/python

スクリプト言語/インタプリタ言語の後発のものだということだから、
「perlが進化した」というように、単一の系列に押し込めるのは明らかな間違いだろう。

393 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:19:04 ]
>>386-389
レス有難うございます。
仮に、この三つを全然知らない場合、どれを会得しようと思いますか?


394 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:52:56 ]
>>393
初心者はPythonがお勧め。

395 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 11:12:48 ]
>>393
Python

396 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 11:42:20 ]
% perl -le '$i=0;$arr[$i++]=$i++;print $arr[1]'


ますますわけわかめ

397 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:21:43 ]
>>396 モチツケ



398 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:56:02 ]
>>396
それはええやろw

399 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 13:00:42 ]
>>393
Perl。

念のために言っとくが、ここはPerlスレだからな!w

400 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 13:55:08 ]
いまからPerlをやるって人って自虐者?



401 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 13:58:02 ]
>>382
これ左辺から評価してる?

402 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 14:39:45 ]
>>398
ちがうよ!全然ちがうよ!
>>382>>396を見比べるとすごく気持ちわるいんだよ!


403 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 15:21:21 ]
>>402
$i=0; $arr[++$i]=++$i; print $arr[2]

404 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 15:49:19 ]
馬鹿すぎて死にたい。

演算子の優先順位
左結合 項 リスト演算子 (左方向に対して)
左結合 ->
非結合 ++ --

ずーっと下に

右結合 = += -= *= などの代入演算子

405 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:34:59 ]
>>377
環境依存の可能性が高いので、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)を保持している一時変数}
を渡すという違い。

406 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:55:14 ]
質問です。
Storableを使ってハッシュをバイナリデータに書き出す際、
上書きではなく追加書き込みで保存する方法はあるのでしょうか。


test.pl
---
use strict;
use Storable qw(nstore);

%hash = (
"a" => '1',
"b" => '2',
);

nstore [%hash], "hash.dat";
----

test.plを一度実行し、hash.dat生成

407 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:55:47 ]
(続き)
その後test.pl内の%hashを

----
%hash = (
"c" => '3',
"d" => '4',
);
----

に書き換えて保存、再度test.plを実行

…するとhash.dat内には
c=>3 と d=>4 のペアしか存在していません。
つまり上書き保存されていることになります。
自分は追加保存の形にしたいのですが、
何かいい案がありましたらご教授ください。
よろしくお願いします。

408 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 19:11:12 ]
>>407
まず元のを読んでから要素を追加して書けばいいと思うよ

409 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:56:02 ]
質問です
外部プログラムを起動して、そのプログラムの実行中にperlから値を渡すといったことはできないでしょうか
あるCのプログラムを実行しscanfで入力待ちになり、そこへ値を渡すといった感じなのですが

410 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:56:41 ]
ソケット使えばできる。



411 名前:デフォルトの名無しさん [2008/11/12(水) 23:35:47 ]
大学の宿題誰かおながいします・・・
>>>>>>>>>>>>>>>>>>>>>>>>>>>
配列,2次元配列を用いて, santaku.pl を以下のようにグレードアップせよ.
○ 3択の問題を4題出題し,正解数を最後に表示.
$mondai を @mondai にして配列化
@sentakuを 2次元配列化 $santaku[A][B]の形
$kotaeを @kotaeにして,配列化

これを santaku2.pl という名前で保存して動かす

412 名前:デフォルトの名無しさん [2008/11/12(水) 23:36:52 ]
santaku.plっってのはこれです
# 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;

よろしくお願いします(;へ;)


413 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:47:42 ]
どこまで考えて、どこが分からないの?

414 名前:デフォルトの名無しさん [2008/11/12(水) 23:55:39 ]
最初からわかりません・・・
1つずつやったら面倒だから二次元配列にするというのはなんとなくわかるのですが
どこから手をつけていいのか;;;

forを2重でつかったりもするんでしょうか・・・頭が痛いです;

415 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:04:41 ]
0番使えよ……

416 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:16:04 ]
$[=1;

417 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:29:28 ]
大学の教養でそういう講義があるのかな?

とりあえず、問題と答えを4問分2次元配列にして、
正解数をカウントする変数をつくればできると思う

418 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:05:45 ]
printf ……

419 名前:デフォルトの名無しさん [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;


420 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:36:31 ]
情報機器の操作とやら でperlなんだね

どちらかというとアバウトな言語だと、教える方も大変だろうに。

rubyとかpythonの方がよさそうだが




421 名前:デフォルトの名無しさん [2008/11/13(木) 01:39:28 ]
>rubyとかpython
さっぱりです><
basic c javaなら講義中に名前を見ましたが。。
その教授はperlが使いやすいといっていたので、、よくわかりませんが


どなたかよろしくお願いします;明日の朝提出なので><

422 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:58:02 ]
明日の朝提出なのになんで今頃もってくるんだか。。。
毎日わかったところまでをここで聞いていればよかったのに。

printfだけなおして友達のを写した方が早いよ




423 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 02:11:29 ]
この程度のがわからないのならあきらめた方が良いんじゃね?

424 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 02:27:03 ]
明日の朝なら、まだ30時間くらいあるじゃない。

425 名前:デフォルトの名無しさん mailto:sage [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])使っちゃ駄目なのかな?

426 名前:デフォルトの名無しさん mailto:sage [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;

この方がスッキリしてて良いかな?

427 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 09:22:27 ]
みんな、なんでいつものゴルフバージョンを作らないの?

428 名前:デフォルトの名無しさん [2008/11/13(木) 09:35:48 ]
>>427
おまえが率先して作らないからだろ。司令官どの。

429 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 10:50:48 ]
419は「2次元配列」の意味がわかってない

430 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 10:52:18 ]
>…ところで、「@sentakuを 2次元配列化 $santaku[A][B]の形」が嫌だなぁ。
>リファレンス($santaku->[A][B])使っちゃ駄目なのかな?

よく、質問を質問で返す人がいるよね。
しかも、「・・・じゃダメなの?」という言い方する人が結構多い。
なんか頭悪そう。



431 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 10:57:07 ]
自信が無いから、質問を質問で返すのかな。とにかく頭悪そうに見える。

432 名前:デフォルトの名無しさん [2008/11/13(木) 11:05:00 ]
頭の悪さ判定師が集結中のスレはここですか?

433 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:27:51 ]
課題にレスしちゃうところがなんか頭悪そう。

434 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:28:49 ]
配列変数で添え字が0から始まるのに、1、2、3…と使うのは気持ち悪い。
$[ = 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";

435 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:29:04 ]
「東京県」に誰も突っ込まないのは頭悪すぎ

436 名前:434 mailto:sage [2008/11/13(木) 11:30:21 ]
>>435
しまったorz

437 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:31:14 ]
東京大学は東京都にも千葉県にも神奈川県にもあるのに頭悪すぎ

438 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:33:41 ]
埼玉都ですね。わかります。

439 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:34:14 ]
ttp://www.campuscity.jp/misscampus/todai/kawakami/
神戸県ですね、わかります。

440 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:38:27 ]
本質的な部分での発言ができないので
コメントや文字列リテラルの中のスペルミスやtypoに
突っ込まざるを得ない人たちが集まるスレはここですか?



441 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:41:17 ]
>>430
そういう言い方しちゃダメなの?

442 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:43:21 ]
ここで本質とは何を指していますか?
頭が悪いので教えてください。



443 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:45:36 ]
>>440
「本質的」とか言い出すあたり、すごく頭悪そう。

444 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:47:23 ]
ここは乗っかっとくとこだろw

445 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:47:32 ]
>>442
議題は横浜がどこにあるか です

446 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 11:47:43 ]
顔真っ赤だよw
そんなに恥ずかしかった?

447 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:06:20 ]
["東京県(都?)","千葉県","神奈川県"] が重複してるのがなんか嫌だね。

my @sentaku = (["東京県","千葉県","神奈川県"])x3;

とか短くできんのかな?

448 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:11:53 ]
>>447

449 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:16:13 ]
選択肢は広がる可能性があるからそれぞれ指定できるようにしておいたほうがいいと思う。
俺なら47都道府県を別配列で持っておいて、インデックスの配列で指定する。
my $sentaku = [
[1,2,3],
[1,2,3],
[1,2,3],
];

450 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:16:17 ]
>>441
「質問に質問で返す」ことはなぜよくないこととされているのでしょうか。
ttp://q.hatena.ne.jp/1144955089





451 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:26:58 ]
これさ、問題つくってるヤツアホだよな。


452 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:32:45 ]
?が付いただけで質問返しと認識するってどうよ…
って430までで唯一「・・・じゃダメなの?」を使ったオレが
顔を真っ赤にしてカキコ。

>>447
my @arr = ( ([1,2 ]) x 2 ) ;


453 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:34:56 ]
>>439
埼玉都はネタだけど、神戸県は明治初期に実在した。

454 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:35:15 ]
あ、問題見てなかった
リファレンス使わない2次元配列なんて、逆にわからんわ

455 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:43:29 ]
>>447
2問目の選択肢が変更になったらどうするのかねアンダーソン君

456 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 13:00:06 ]

リファレンス使わない2次元配列なんてない、
てことはリファレンスは使っていいのか、
となると2次元配列じゃない方がやりやすくね?

ってなるんだが。


457 名前:デフォルトの名無しさん [2008/11/13(木) 13:11:47 ]
↑ こいつ最高に頭悪い

458 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 13:35:50 ]
>>2-458
すごく頭悪そう。

459 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 15:09:10 ]
>>458 チョトワロタ


460 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 16:20:56 ]
ヒマだったんで二次元配列縛りなしでやってみた。

my $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";




461 名前:407 mailto:sage [2008/11/13(木) 16:33:58 ]
>>408
レスありがとうございます。
規制に巻き込まれてしまい、返事が遅くなってしまいました

やはり一度読み込み直すしかありませんか…
外部データが増えるとそれだけ読み込み・追加・書き出しに時間がかかってしまうので
何とか追加だけでやりくり出来ないかと考えていたのです。
アドバイスと合わせ、色々模索してみたいと思います

462 名前:460 mailto:sage [2008/11/13(木) 16:48:31 ]
誤 $c <= @qz
正 $c <= @{$_->{'選択肢'}}

余計なことするといつも恥をかく...orz




463 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 18:20:36 ]
>>461
> やはり一度読み込み直すしかありませんか…

いや。
普通、DBM類を使う。

464 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 19:39:19 ]
>>461
全ての面倒を読み込み側に押し付けるって手もある。
保存用フォルダに "${^T}.${$}" 等のファイル名で書き出すとか。

465 名前:デフォルトの名無しさん [2008/11/13(木) 20:08:32 ]
この度、WindowsサーバーのPerlを5.6.1から5.8.8にバージョンアップ
する事になりました。
バーチャルサーバーを立ててWEBチームにテストしてもらっていたのですが、
動かない部分がいくつかある模様です。
WEBチームからPerlのバージョンアップによって
命令がどう変わったか等を調べて欲しいと頼まれたのですが、
どのようにして調べれば良いのでしょうか?

ご教授お願いいたします。


466 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 20:21:12 ]
>>465
perldoc.perl.org/index-history.html

467 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 20:47:19 ]
「質問を質問で返すな」って、そんな場面は、結構あると思うし、
そもそも(発端になった)>>435は質問に、まったく答えてない訳でも
無いのに…。

「夕飯何にしようか?」
「肉が良いなぁ。焼肉としゃぶしゃぶどっちが良い?」
「質問を質問で返すなm9(^Д^)プギャー」

とか言っちゃうのかな?(w

468 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 20:51:27 ]
いうだろ

469 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:00:57 ]
これがゆとり大学生の実態である。

470 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:03:53 ]
>>465
>命令がどう変わったか
「命令」は変わってないよな。w

マジレスすると、変更内容を調べるよりも、
ダメなところを特定して調整するほうがきっとマシ。
それがイヤなら、Perlのバージョンを戻せ。

つか、両方インストールして使いわけろよ。ふぁ。



471 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:12:38 ]
>>461
キーの重複はかまわないのか?

☆かまわない
別のファイルに出力してから、もとのファイルに
くっつければいいんじゃね。

☆ダメ
前のファイルを読み込まずに、重複を調べる
方法を教えろ。
続きはそれからだ。

472 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:51:49 ]
× 続きはそれからだ。
○ 続きはよそでやれ。

473 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:56:22 ]
「夕飯何にしようか?」
「普通に焼肉じゃいけないの?」


474 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:56:52 ]
「夕飯何にしようか?」
「普通にしゃぶしゃぶじゃいけないの?」

475 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:57:56 ]
「夕飯何にしようか?」
「普通にカレーじゃいけないの?」

476 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:59:48 ]
「夕飯何にしようか?」
「ラーメンじゃダメなの?」

477 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 22:32:54 ]
「夕飯何にしようか?」
「俺が決めていいの?」

478 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 01:30:11 ]
夫「今日の夕飯なに?」
妻「何が食べたいの?」
夫「質問に質問で返すなっ!!」

……これが>>430の結婚生活(もしあったとして)


479 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 05:35:27 ]
「夕飯何にしようか?」
「晩飯じゃないの?」

480 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 06:10:57 ]
単一ファイル内で複数packageを定義した場合、
継承がうまく動かないのですが、どうすれば良いでしょうか。

$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 すると
問題ないのですが、単一ファイル内で継承させる場合はどう書けば良いのでしょうか。



481 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 06:42:23 ]
{package Foo;
sub new { bless {}; } }
{package Bar;
@ISA = qw(Foo);}

$foo = Foo->new(); # OK
$bar = Bar->new(); # OK

482 名前:480 mailto:sage [2008/11/14(金) 07:00:38 ]
>>481
おおお。助かりました。thanks!

483 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 08:40:19 ]
package Foo;
sub new { bless {}; }

package Bar;
@ISA = qw(Foo);

package main;
$foo = Foo->new(); # OK
$bar = Bar->new(); # OK

じゃねえの

484 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:24:45 ]
夫「今日の夕飯なに?」
妻「スキヤキじゃダメなの?」
夫「・・・」

485 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:26:27 ]
夫「赤ちゃん産まれた?男の子?女の子?」
妻「男じゃダメなの?」
夫「・・・」

486 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 19:10:29 ]
>>485
その流れはヤバい!w
もう離婚するしかないな。

487 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:42:25 ]
ゴメン理解できない
童貞の俺にも分かるように詳しく

488 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:53:25 ]
童貞じゃないけど、俺もわからん!

489 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:03:13 ]
女だったら、夫がロリコンでいたずらすると思ったんだろう。

490 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:50:28 ]
な〜る



491 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:58:27 ]
深読みしすぎてた
トン

492 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:46:06 ]
>>489
それは俺も考えたけど、
それだとスキヤキが説明できない。

493 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 05:16:10 ]
>>485
もう嫁ケンカうってるじゃんw

494 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 09:03:03 ]
ツンなだけだろw

495 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 10:19:13 ]
生まれる段階に至っても性別を知らなかった夫

496 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 19:02:17 ]
産まれた?って訊いてる時点でダメだろ

497 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 19:58:51 ]
後のオブジェクト指向である

498 名前:デフォルトの名無しさん [2008/11/16(日) 02:32:11 ]
同じ文字列を使ってもDigest::MD5で得られる16進とmd5sumの結果が違うのはなぜでしょうか

499 名前:498 mailto:sage [2008/11/16(日) 02:36:14 ]
自己解決しました。
一方には改行コードが含まれていないだけでした。

500 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 10:31:38 ]
perlのマッチ演算子で変数が使えますけど
$pat = "foo"; $str =~ /$pat/; # この場合 /foo/ と同じ
変数に含まれる文字を全て普通の文字としてマッチさせるにはどうしたらいいでしょうか。

たとえば $pat = "foo[0]"; だと、/$pat/では[0]の部分を文字クラスとして処理するよう
ですが、単純に "foo[0]" という文字にマッチしてほしいのです。



501 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 10:36:15 ]
/\Q$unko\E/

502 名前:デフォルトの名無しさん [2008/11/16(日) 13:14:45 ]
dmain.cpp
Note: 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

こんな風にするスクリプトってどうやるの?


503 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:57:44 ]
perl -ple 's/$/\\/; s/cpp/obj/; s/Note: including file: d:/\/cygdrive\/d/; END{ print "dmain.cpp";} '

504 名前:デフォルトの名無しさん [2008/11/17(月) 20:02:29 ]
質問です。掲示板のプログラムなのですが、データファイル(1行1投稿内容のテキストファイル)
を掲示板のCGIのサーバーとは異なるサーバーに置きたいのですが、その場合どのように
すればよいでしょうか? できればmySQLサーバーはインジェクションの関係で使いたくあり
ません。

サーバー1 掲示板cgiや画像データなどを担当
サーバー2 掲示板テキストデータ(掲示板cgiから読み書きされる)

なにかアドバイスをお願いします。

505 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 20:11:26 ]
>>504
NFSマウント。とネタレス。
WebProg行け。とマジレス。
その質問だとperl無関係だから、いきなりperlのスレに行くなよ…。

506 名前:デフォルトの名無しさん [2008/11/18(火) 19:27:48 ]
www.drk7.jp/MT/archives/001422.html
に記載されている通りにやったのですが、
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も自分の環境に沿って変えているのですが出来ません。

どなたかよろしくお願いします。

507 名前:デフォルトの名無しさん [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が間違っているのでしょうか?
どなたかアドバイスお願いします。

508 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 21:14:27 ]
エラーメッセージは?

509 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 21:56:41 ]
それ以前の問題だろ…

javaの文章に適当に$つけりゃperlになるとでも思ってんのかねえ?

510 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 21:58:07 ]
Perl 6で動かしてるとか



511 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 22:36:19 ]
  エラーメッセージを読む。

そういうクセをつけてあげないと、本人のために良くないだろ。

512 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 22:57:13 ]
すげえ正論っぽいし、事実>>507に対するレスじゃなきゃ
完全同意なんだけどねえ。
車を運転しようとしてる9歳児に「交通規則は守れるか?」
って問うくらいには見当違いだと思う。


513 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 23:17:55 ]
まあまあ、推測に推測を重ねていないで、ここは本人のレスポンスを
待とうじゃないか。

514 名前:デフォルトの名無しさん [2008/11/19(水) 00:13:09 ]
>>505
ありがとうございます。別にきいてみようとおもいます。

515 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 00:44:16 ]
>>507
- java の . と perl の . の違い
- int の意味
- java の size メソッドと perl の scalar @arr で何が得られるか
- java の remove メソッドと perl の shift ( or splice )
- 更には各変数と配列に何が入っててどういう状態なのか
- 前後にどういう処理が行なわれているか
これが直に答えられないなら移植なんか考えない方が良いよ。


516 名前:506 [2008/11/19(水) 03:43:41 ]
No library found for -llibdb じゃなくて
No library found for -ldb でした…。
どなたかよろしくお願いします…。

517 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 07:47:34 ]
>>516
dbは正常にインストールされているのか

518 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 19:35:21 ]
>>512
じゃあ何と言うべきなの?
キミにはまだ早い、オトナになるまで待ちなさい、とでも?

519 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 19:45:50 ]
ゆとり乙

でおk

520 名前:506 [2008/11/20(木) 00:21:04 ]
>>517さん
dbというとちょっと分からないのですが、
Berkeley DB 4.6.21 をインストールして、
www.drk7.jp/MT/archives/001422.html
に書いてある通りに全ての手順を踏んだのですが、
No library found for -ldb
となって出来ないんです…。




521 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 04:46:40 ]
ぜんぜん詳しくないけど、あてずっぽうで・・・

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

-L オプションが見当たらないけど、なんで?
-IC:\strawberry\perl\lib\CORE" って正しいのかな?lib のディレクトリを -I で指定してるけど。
  lib ディレクトリにヘッダファイルが入ってるの??
-ldb が無い、って言ってるんだから、ほんとうに無いのか、あるのか、自分の目で確かめたかな?
-ldb と省略せずに、\hoge\hage\libdb.l みたいにフルパスで指定してみてはどうか?


522 名前:デフォルトの名無しさん [2008/11/20(木) 20:16:22 ]
require 'ファイル名';
とするときに、1つ前のディレクトリにあるファイルを指定したいのですが、どうすればいいでしょうか?
require '../ファイル名';
だとエラーがでてしまい、できません。

523 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 21:40:27 ]
>>522
1つ前の前に現在地がどこかを考えるんだ
../ や ~/ はシェルの機能なんだ


524 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 02:09:21 ]
>>522
スクリプト保存場所と実行場所が同じならそれで動く。
(多分このケースだろうけど)違って場所固定ならスクリプトに
use FindBin;
require "$FindBin::Bin/../hoge.pl" ;
但し、FindBin はケースによってスクリプト保存場所を
示さない場合があるので、そんな場合には FindBin::Real
だか CPAN から引っ張って来て使う。

(蛇足)スクリプト内でカレントディレクトリに動的変化があり、
require する対象も連動変化があるなら、
use Cwd ;
しといて
require getcwd . q{/../hoge.pl}しなきゃならん。

525 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 02:16:40 ]
あ。説明一行目正確じゃねえな。
「保存場所に関係無く、実行場所の ../ にあるならそれで動く。」
に訂正。

526 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 03:33:20 ]
まぁたいてい、マウスでクリックして動作させるだろうから
カレントディレクトリをスクリプトのあるディレクトリに移動させておく、とか
そういう処理が必要だろうな。

527 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 06:37:05 ]
>>522 エラーメッセージは?




528 名前:506 [2008/11/21(金) 13:19:05 ]
>>521さん
返信ありがとうございます。
libdb.a
というのは前述したURLに書いてある通りに作成しました。
-Lオプションに関してはわかりません…。
確認したところ
\strawberry\perl\lib\CORE
にヘッダファイルがたくさん入ってました。
-ldbに関しては検索しているのですが、どうしてもわからないんですよね。
やはりWindowsでperl環境は無茶があるのでしょうか。

529 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 17:18:30 ]
>>528
なんか>>506のエラーは
エラー情報(version.cないよ、コンパイルエラーみたいな)っていうのは、
そのページの「CPAN で DB_File をインストール → 必ず失敗する。」のところだから
そのまま次の「config.in を修正して DB_File を手動で dmake してインストール」
にいけばいいんじゃないの? そこでLIBパス設定してるし

530 名前:506 [2008/11/22(土) 01:11:58 ]
>>529さん
返信ありがとうございます。
修正して、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ファイルしかありませんでした。



531 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 21:00:21 ]
>>530
libdb.a はちゃんと C:\strawberry\c\lib\ にあるのかい?ってのと
↑には libdb.a という文字が登場しないなってのがあやしいかと。

532 名前:デフォルトの名無しさん [2008/11/22(土) 22:41:13 ]
さくらインターネットの環境のせいかどうかわからないのですが、LWP::UserAgent mirrprの挙動がおかしいってことはありますか?
mirror呼ぶと$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

533 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 23:43:51 ]
x64のppmリポジトリってまだないのね。
リポジトリ追加してもパッケージ数が0で何かと思ったらそういうことか…。

534 名前:506 [2008/11/23(日) 01:56:00 ]
>>531さん
解決しました!
531さんに指摘されて、libdb.aという文字が出ないのかを考えたところ、
ファイル名だけ変えていて、拡張子が変わっていませんでした。
要はlibdb.a.libというファイルでした。
なので拡張子変換ソフトを使ったところ上手くいきました!
本当ありがとうございます!

535 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 01:41:41 ]
ちょっと前に、WWW::Mechanizeを1.34から1.50にupしたんですが、この1.50の挙動についての質問です。

1.50になってから、$mech->get('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をしてしまって、化けバケになりました。

536 名前:535 mailto:sage [2008/11/24(月) 01:42:13 ]
そこで、$mech->get()した時に、自動でutf8デコードさせないようなオプションやメソッドを
探したんですが、それが見当たりません。

ドキュメントやソースファイルを読んでみて、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 };
と書く、などで回避しておりますが、もっとスマートな方法がないのかなと思っております。

537 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 17:23:57 ]
Perl 5.8.6なんですが
sysopen(TPL, $file, O_RDONLY)
のとこで
Argument "O_RDONLY" isn't numeric in sysopen
というerrorを毎回吐きます。

動作は見たところ正常ですが、Apacheのerror_logにたまるのが気持ち悪くて…。
どこのサンプルにもマニュアルにも上の通りにかいてありますが、
O_RDONLYじゃいかんのですか?

538 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 17:33:00 ]
O_RDONLY が定義されてないからじゃないの?
>どこのサンプルにもマニュアルにも上の通りにかいてありますが、
いったい、どこのサンプルやマニュアルを見たんだい?

おぢさんがひとつ、いいことを教えよう。
google 「perl O_RDONLY」
パソコンを買ったら、まず最初に google を覚えよう。

539 名前:537 mailto:sage [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); の例が出てくるんですよね

540 名前:537 mailto:sage [2008/11/24(月) 19:49:25 ]
自己解決しました
改めてよく読んだらperldoc.jpに「標準モジュール Fcntl 経由で」って書いてありましたね
use Fcntlで解決しました
>>537 ありがとうございました



541 名前:デフォルトの名無しさん [2008/11/24(月) 21:43:42 ]
3×3のクロスワードを作ろうと思います。
3文字の辞書ファイルは既にあって
3×3の真ん中には「か」という文字列が入っています。
このとき、3×3のクロスワードを作成するにはどうすればよいでしょうか。



542 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 21:55:33 ]
ここって宿題の依頼もありだっけ?


543 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 21:57:31 ]
Perlにカスってもいねえし

544 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 22:06:30 ]
ゆとりは宿題はやってもらうものと考えてるからな。

545 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 23:26:48 ]
学業も仕事も他人に任せてゆとりの時間を楽しむのがゆとりの正しい姿
宿題をやる仕事を貧しい人達から奪うほど情が無いわけではありません

546 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 00:33:23 ]
やってくれって言ってないじゃん!

547 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 01:34:49 ]
メール鯖からパイプで渡された標準入力を
上手い事いじらせてくれるモジュールってあったっけ?
Net::POP3〜MIME::Parserなら分かるんだが
標準入力しか触れないの扱わんとならんorz
テキストをチマチマと拾ってくしかないのか・・・?

548 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 02:15:47 ]
日本語でおk

549 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 05:36:06 ]
>>535
WWW::Mechanizeはよく知らないんだけど
$res->decoded_content(charset => 'none');
この辺りヒントになるかも

550 名前:532 [2008/11/25(火) 13:39:13 ]
mirrorじゃなくてそもそもrequest($url, $file)で$fileに取得できてないってことに気づいた。
おかげでCPANコマンドでも
Transfer truncated: only 0 out of 149396 bytes received
が出て死んでしまう。
ググっても他に同じような人出てこないし何いじってこうなったんだろう。。



551 名前:535 mailto:sage [2008/11/25(火) 13:39:41 ]
>>549
レスありがとうございます。
確かに、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文字列が返ってきます)

code.google.com/p/www-mechanize/issues/list に要望でも出したら対応してくるのかな。

552 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 14:22:15 ]
ヘッダの情報に合わせて自分で変換してしまう

553 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 17:05:16 ]
>>551
ああ、なるほど。
deflate対応と文字コード変換がセットになってるのがややこしいんですよね。
decoded_content自体に罪は無いけど世の中のページはstrictじゃないページも沢山あるので
デフォルトオフか最低でも設定でオフに(WWW::Mechanizeから)出来るように考慮されてるべきだと思います。
>"Do we need to expose the options there?"
もちろん! というか主要な部分の挙動変えるなよって感じですが。
こういうPHP的なハマり方は耐えられません。

554 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 02:04:29 ]
>>535
WWW::Mechanizeなんてサブクラス化して使うのが当たり前だから
サブクラスで好きなように自分好みのcontentメソッド再実装したらいいよ
最近Perl使ってないので的外れなこといってるかもしれないけど
少し前まではMechanizeはそういう使い方が当たり前だった

生のWWW::Mechanizeを使うという考えを発想転換したら?

555 名前:535 mailto:sage [2008/11/27(木) 18:19:54 ]
>>552
その発想は..(ry
でも確かに、元ページのcharsetが既知ならば、それもありかもです。

>>553
そうなんです。decompress絡みとcharset変換が同じメソッド内で
同時に処理されてるのがなんだかなあと言う気もします。

まあ同意も得られたことですので、>>551のレポートフォームに
要望でも出そうかと思ってるんですが、ascii文字主体の言語圏の人々に
いかにしてこの思いを伝えようかと苦慮しているところです。
(その前に、英語も全然得意でないので、結構ビビッているんですが)

556 名前:535 mailto:sage [2008/11/27(木) 18:22:05 ]
>>554
>WWW::Mechanizeなんてサブクラス化して使うのが当たり前だから
うーん、そんなもんなのですか?

自分はあんまり継承とかサブクラス化を使わないので、こちらこそ的外れな
意見かもしれませんが、私の個人的な認識(印象?)では、クラスを継承したり
サブクラス化するってことは、そのベースクラスの機能を最大限利用しつつ、
それプラス自分なりのメンバ(?)やメソッドを追加したり加工したり
するために使うものかと思うのです。
(もしくは、イベント駆動型のmoduleにハンドラを追加する時など)

ひょっとして>>536,551での書き方か悪かったのかもしれませんが、
今私が不便だと感じているのは、$mech->contentの動作自体ではなく、
$mech->get()した時点で、そこから連鎖的に内部のメソッドが実行され、
linkやformなどの$mech絡みのオブジェクトが、自動でutf8フラグ付に
decodeされてしまったものがセットされる、とういうもです。
で、これを抑制したい、回避できないか、と。

557 名前:535 mailto:sage [2008/11/27(木) 18:22:37 ]
つづきです。

確かに仰るとおり、気に入らない動作や挙動の関数なら、自前の関数でも
書いて上書きでもしてしまえっ、という考えは自分にもありますので、
どれを上書きすべきかと探索し、decoded_content()に行き着きました。
そこで>>536の一行を追加し、とりあえずその場しのぎをしたんですが、
他の制御方法(mechの外からメソッドや、オプションを渡すなどで)
をご存知の方がおられないかと思い、書き込みさせて頂きました。

ちなみに今回の例を、クラスメソッドを再定義して対処するとなると、
_update_page()と言う事になりますが、このメソッド全体をコピペして、
対象の一行だけ削除なりコメントアウトなりすれば目的は達成できますが、
ベースとなるクラスメソッドを再利用しないで一から再定義するような
やり方が、mech使いの方には一般的なのでしょうか。

(自分的には、この_update_pageに伴って生成されるlinkやformオブジェクト
は大変重宝しており、出来ればそのまま利用したいです。ですが今回の場合、
元の動作の一部をスキップするのが目的のため、$self->SUPER::(base_method)
が利用できないので、あまり継承する意味が無いような気がするのですが)

長文、連投になってしまい、どうもすいません。

558 名前:デフォルトの名無しさん [2008/11/27(木) 19:13:28 ]
今入ってるレンタルサーバでmod_perlが使えると知り、
バージョンを調べたら1.9916となっていました。
この番号はどう読めばいいんでしょうか。
バージョン1にパッチ9916があてられている・・・のかな?

自宅の制作環境(Win)にも近いバージョンのものを入れたいのですが
そのものズバリは見つかってなくて、どう選んだものか迷っています。
アドバイスよろしくお願いします。

559 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 01:21:41 ]
>>556
失礼
content()はアクセサーだからget()で内部メソッドを辿る必要があったわ
で、問題はもう自分でも解決してるみたいだけど、
_update_page()内のdecoded_content()の呼び出し
ここの引数リストが空なので、メンバ変数なりクラス変数なりで渡すように
サブクラスで再定義するといい

>ベースとなるクラスメソッドを再利用しないで一から再定義するような
>やり方が、mech使いの方には一般的なのでしょうか。
別にサブクラスじゃなくてもいいけど、サブクラスに定義した方が再利用性が高い
コンパイル時に確定するので、順番とか気にしなくていい
などのメリットがあると思われる

ていうかオブジェクトクラスはサブクラス化することに意義があるし、そのように使われる
ことを意識して書かれてることが多い
例えば、サブクラスで実装されることを意識して空のサブルーチンを置いたりする

560 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 23:28:35 ]
画像編集だとImageMagickあたりが定番かなと思いますが、
動画だったらffmpegあたりでしょうか?



561 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 06:54:09 ]
質問です。PerlでリモートのIISにWEBDAVの基本認証で接続し、
ファイルをアップロードしたいのですがうまくいきません。

#!/usr/bin/perl
use HTTP::DAV;
$d = new HTTP::DAV;
$url = "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 192.168.0.100/dav/: Unauthorized.

長いので一旦切ります。

562 名前:561 mailto:sage [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認証のチェックは共に外してあります。


563 名前:561 mailto:sage [2008/11/29(土) 06:56:08 ]
同じ設定でWindowsのDAVクライアントCarotDAVから接続した場合はうまくいきます。
そのときのログは

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でアップロードできればいいのですが、なにかいい方法ご存知でしたら
ご教授いただきたく思います。

引き続きこちらでも調べて見ます。

564 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 13:46:35 ]
Perlプログラミング初心者です。
困っていますので、助けてください。
以下のようなデータを持っています。
-----------------------------------
xおだ
56 80 90

xとよとみ
90 85 45

xとくがわ
90 90 100
-----------------------------------
1行目は名前のまえにxという印がついている
2行目に各教科の点数(0から100)がスペースで区切られている。
たとえば、左から国語、算数、理科
3行目は殻行
-----------------------------------
このデータから、それぞれの教科の点数による分布表をつくりたいのですが、どのように書いたらいいのか教えてください。
具体的には、
国語の100点は何人で、99点は何人で、、、、0点は何人。
同じように、算数と理科です。

どうぞよろしくお願いします。

565 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 14:03:52 ]
「初心者です」って免罪符つけないほうが良いぞ
嫌う奴も居るから

566 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 15:22:14 ]
>565
この場合は微妙だが、短絡的すぎないかw
そりゃ「初心者なので教えてください」は死ねって思うけど、例えば

  1ヶ月くらい前にPerlの勉強を始めた初心者です。
  Perl/CGIの入門書に載っている、簡単なBBSくらいは作れるようになりました。

とかなら、教える側にしても重要な情報だべ?


567 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 15:53:12 ]
「困ってます。助けてください」
も誰にもメリットのない無意味な免罪符。

568 名前:567 mailto:sage [2008/11/29(土) 16:08:50 ]
まぁいっか。ただし、記述では書いてやらん。
以下の説明を元に自分で作れないならもう諦めてくれ。

その前に--------
ファイル保存形式は変更可能なら変更したほうが読みやすい。(プログラムがな)。
perlの場合、順番に〜、とか他のプログラムで扱ってるのと同じでもいいけど、
いちいち名前つきデータにしたほうが便利になる。
無意味な空行もなくしていいならなくしたほうがいい。
----------------

1:ファイルを開いて変数に移す。
どうゆう構造で格納すればいいのかは使う人が考えてくれ。
リファレンスを使うと望みどおりに格納できる。

2:sortを使ってデータを意図したとおりに揃える。

3:出力して終了


ただし、$name{'おだ'}->[0];
みたいな形式で格納してしまった場合に特定の点数の者が何人いるかを調べるとき、
たぶんデータをループにかけて全チェックせねばならない。

そんだけの用途なら、
$marks[0]->[90] = ('name_1', 'name2'); #つまり国語90点の人全員の名前
と格納したほうが良い

569 名前:567 mailto:sage [2008/11/29(土) 16:11:52 ]


まちがた。
$marks[0]->[90] = ['name_1', 'name2']; #つまり国語90点の人全員の名前
こうか
どうでもいいか

570 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 16:21:14 ]
gmplayerに配信元を渡す為に、
ブラウザで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!

という風に警告を表示されてしまいました。
この警告を出さなくするにはどうしたらいいのでしょうか?




571 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 16:42:37 ]
>>570
use warnings;の一行を取っ払えば解決

572 名前:570 mailto:sage [2008/11/29(土) 16:51:02 ]
>>571
いえ、use warningsのままどうにかならないものかと…。

573 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 17:02:05 ]
<>を使うのをやめる

574 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 17:02:50 ]
>>570
defined $1

575 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 17:03:18 ]
パターンマッチしたならその結果を見てやれよw

576 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 17:08:33 ]
>>570
>Use of uninitialized value in string ne at ./mp_wp line 11, <> line 1.
ちゅうのはあれだ、$1 を ne で扱って評価しとるからで、
($1 ne '') は ($1) じゃいかんのかね。
パターンマッチからして undef 以外の 0 や '0' が来る筈ない場所だしなあ。


577 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 18:55:57 ]
>>564
勉強中なんで、腕試し。こんなもんかな?(未検証)

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[$_]);
}

578 名前:570 mailto:sage [2008/11/29(土) 19:06:42 ]
>>573-576
ご教示ありがとうございます。
色々やり方があるんですね。if文の()内を(defined($1))にしたら警告が消えました。

579 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 20:53:53 ]
>>564
勉強中の自分も作ってみた。

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}};
}
}

580 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 00:12:06 ]
ここ宿題スレじゃないんだけど



581 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 13:03:38 ]
1ファイルの変換なら
perl 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
の全部に一括して処理するにはどう書けばよいでしようか


582 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 13:07:12 ]
for ( @ARGV ){
 open IN, $_ ;
 # 略
 close IN ;
}

583 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 13:12:18 ]
for ( @ARGV ){
 open IN, $_ ;

while( <IN> ){
s/こぬにちは/こんにちは/;
print $
}

close(IN);
こうでしょうか?
済みません 馬鹿なんで 略無しで書いてくれると嬉しいです

584 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 13:24:41 ]
>>581
system("perl henkan.pl page$_.html > mypage$_.html") for(1..60);

585 名前:582 mailto:sage [2008/11/30(日) 13:28:24 ]
甘えんなよ、自分で考えろよ…。
後、「初心者スレ」てーのが WebProg にあるからそっち逝ってくんね?
「誘導してください」なんて言ったら切れるぞ?

586 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 13:32:23 ]
henkan.plは変わりないままで
コマンドプロンプトのところで
henkan.pl page1.html > mypage1.html
のかわりに
system("perl henkan.pl page$_.html > mypage$_.html") for(1..60);
と書いてリターンでしょうか?

すみません バカで。


587 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 14:26:34 ]
わからない七大理由
1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする。
6.感謝しない・・・教えてもらって当たり前。事がすんだらさようなら。
7.逆切れする・・・自分の思うようにならないと逆切れする。

588 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 14:45:12 ]
>>586
henkan60.plとかの名前で上の1行を保存
perl henkan60,pl
で、実行。
試してないんで、うまくいかなくてもかんべんな。

589 名前:デフォルトの名無しさん [2008/11/30(日) 14:57:09 ]
過去ログにもうあったらごめんなさい。
HTTP::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です
誘導でもかまいませんので、ヒントをください。

590 名前:588 mailto:sage [2008/11/30(日) 15:02:02 ]
ひとつにまとめるななら、

for(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);
}



591 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 15:10:35 ]
>>589
Windows なら
binmode OUT;
で成功するかも

592 名前:デフォルトの名無しさん [2008/11/30(日) 15:13:33 ]
591さん
早速の回答ありがとうございました。

書き込みの部分を
open OUT,"> ./maptest.gif";
binmode OUT,":raw";
print OUT $response->content();
close OUT;

として、教えていただいた、binmode を付けることで解決しました。

ありがとうございました。

593 名前:581 mailto:sage [2008/11/30(日) 16:10:29 ]
本当に助かりました。ありがとうです!

594 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 18:40:44 ]
my $q = new CGI;



my $q = CGI->new();

ではどっちがカッコイイ書き方なんでしょうか?


595 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 21:12:20 ]
new CGI は後方互換な「間接オブジェクト記法」
間接オブジェクト記法にはトラップがあるのが明記されてる
が故に CGI->new() の方が良いとされる。
が、現実では頻繁にコンストラクタを呼ぶ時にだけ
間接オブジェクト記法は使われている。

つーことで、new の時はどっちでもいいじゃね?method 呼ぶ時に
間接オブジェクト記法したら「変態さんがいる!」って言われるかも
しれんけどさ。

596 名前:594 mailto:sage [2008/12/02(火) 21:18:55 ]
>>595
なんと!ありがとうございます。
Perlのオブジェクト関係はもっとキチンと勉強せねば…。

597 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 21:20:58 ]
感嘆詞のニュアンスが微妙な気がしなくもないこともなくはないんだが。


598 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 21:34:11 ]
変態さんにびっくりしたのでは

599 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 22:21:54 ]
{ package Foo ; sub new { bless {}, shift } sub get { "hoge\n" } }
print 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 ;


600 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 22:24:05 ]
確かにこれならMな変態さんと呼ばれても仕方ないな



601 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 23:34:03 ]
なんと!スープです

602 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 07:46:58 ]
>>595
「後方互換」てーのは語弊がある書き方だな、、と自己レス
perlobj の "Indirect Object Syntax" の項に説明がある。

603 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 12:49:12 ]
関数呼び出しの時に & つけたりつけなかったり
なんなんですか?

604 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 13:26:44 ]
>>603
www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq7.html#what_s_the_difference_between_calling_a_function_as__foo_and_foo__
perldoc.jp/docs/perl/5.10.0/perlsub.pod

605 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 13:54:41 ]
>>604
ありがとうございました。

よくわかりませんでしたが・・・。付けるに超したことはないのかな。

606 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 15:36:25 ]
>>605
組込み関数を全て覚えてて関数名ダブらない自信があるんなら付けてなくてもいいけど、
それまでは付けた方が良いってリャマの人が言ってた!
アンパーサンドなしじゃ関数名がダブったら組込み関数の方を呼びに行っちゃうからね。

607 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 17:05:47 ]
PBPでは付けるなって言ってるな。
(サブルーチンのリファレンスが欲しい時以外)


608 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 17:33:41 ]
CPANあたりみても"&"つけてない方が圧倒的に多いし、使えるからといって
組み込み関数とだぶった名前つけたら読みにくくなるだけじゃないか。

あと、サブルーチン呼び出しの&の有無は完全に等価ではなくて、プロトタイプ
まわりや引数を省略したときの振る舞いなんかが違うので注意な。


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

609 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 17:43:06 ]
いや普通は付けないが
Perl初心者は慣れるまでは付けるようにしておけ、
という事だよリャマ本

610 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 18:52:12 ]
バッドノウハウ論議って楽しいよな



611 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 21:10:02 ]
初心者っぽく見えるから俺はつけない

612 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 22:10:49 ]
シンタックスハイライトのついたエディタ使えば組み込みとダブるなんて
意識して書かない限りやらないだろ・・・

613 名前:デフォルトの名無しさん [2008/12/04(木) 12:16:49 ]
>>608

> sub f(\@) {
> my($x) = @_;
> print join(",", @$x), "\n";
> }
>
> @array = (1, 2, 3);
> &f(@array); # 空文字列

この結果、ひどいな。。。
いや、昔の perl だと普通か。。。


614 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 12:40:56 ]
>>613
プロトタイプ指定は「組込関数のように振る舞える」のが肝なので、
わざわざ & を付けて区別するのは何を意図してるの?って感じだ。
ヘンな言葉遣いをすればヘンに解釈されるってだけじゃん。

615 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 14:10:34 ]
>>614
初心者が
「慣れないうちは&をつけとこっと」
って思って勉強が進む。そのうち関数プロトタイプのことを知り、試す。
「あれ?」
っていうストーリー。

616 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 16:17:28 ]
&も()も必ず付ける。それが俺のジャスティス。

617 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 16:19:21 ]
必ずつける人はPythonにでも行った方が幸せになれる

618 名前:デフォルトの名無しさん [2008/12/04(木) 17:02:44 ]
ppm install DBD-mysql
するとないって言われるんだが・・俺だけ??
情報求むm(_ _)m

619 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 18:12:16 ]
――なにが幸せかわからないのです。本当にどんな辛いことでもそれが正しい道を
進む中での出来事なら、峠の上り下りもみんな本当の幸いに近づく一歩ずつですから。


620 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 18:33:06 ]
>>618
「DBD-mysql PPM リポジトリ」でググッて好きなページを参照して。



621 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 21:58:48 ]
1から99までに含まれる奇数を出力するプログラムを書いてみたんですけど
これ以上短くすることは可能ですか?

print$_%2?"$_ ":()for 1..99

622 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 22:08:38 ]
$_%2&& print for 1..99

623 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 22:22:24 ]
print $_*2+1,' 'for 0..49

624 名前:621 [2008/12/04(木) 22:46:56 ]
>>622
即レスありがとうございます
なるほど!!
でもそれだと半角スペースがないですよね?
できれば半角スペースは入れたかったんですけど…

>>623
ありがとうございます
普通に足していく方法ですか
確かに短くなりますねw
うまく説明できないんですけど演算を上手くつかって短くしたいんですよね
説明不足ですみませんでした

625 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 23:03:57 ]
print$_%2?$_:' 'for 1..99

626 名前:デフォルトの名無しさん [2008/12/04(木) 23:59:40 ]
>>620
ありがとうございますm(_ _)m

627 名前:621 mailto:sage [2008/12/05(金) 00:59:21 ]
>>625
ありがとうございます
偽の場合の式をうまく使ってますね
何か書かないといけないから空のリストを置いてたんですけど
これだと無駄がない感じになりますね

628 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 02:11:14 ]
$,=" ";print 1..99

629 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 02:14:04 ]
痛たたた……

630 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 02:16:48 ]
あ、奇数か。スマソ

$,=" ";print grep{$_&1}0..99

短くないな…








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<169KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef