Perlについての質問箱 38箱目at TECH
Perlについての質問箱 38箱目 - 暇つぶし2ch1:デフォルトの名無しさん
08/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プログラミング板 URLリンク(pc11.2ch.net) )

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

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

▼ 前スレ
Perlについての質問箱 37箱目
スレリンク(tech板)

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


2:デフォルトの名無しさん
08/09/21 12:22:38
[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: URLリンク(www.site-cooler.com)

[本]
リャマ: URLリンク(www.oreilly.co.jp)
駱駝: URLリンク(www.oreilly.co.jp)
Effective Perl: URLリンク(www.ascii.co.jp) (修正)
クックブック: URLリンク(www.oreilly.co.jp)
Perl ベストプラクティス: URLリンク(www.oreilly.co.jp)
Perl Hacks: URLリンク(www.oreilly.co.jp)

[オンラインマニュアル]
最新のドキュメント: URLリンク(search.cpan.org)
perl5.8.xのドキュメント(一部): URLリンク(www.kt.rim.or.jp)
perl5.005_03 のドキュメント: URLリンク(www.kt.rim.or.jp)
日本語ドキュメント検索: URLリンク(www.cpan.jp) (停止中)
perldoc.jp: URLリンク(www.perldoc.jp)
perldoc.com: URLリンク(www.perldoc.com)


3:デフォルトの名無しさん
08/09/21 12:23:02
[モジュール]
CPAN.com: URLリンク(search.cpan.org)
河馬屋二千年堂: URLリンク(homepage3.nifty.com)

[テクニック]
Perlメモ: URLリンク(www.din.or.jp)
Perlのページ: URLリンク(homepage1.nifty.com)
Perlの小技: URLリンク(homepage3.nifty.com)

[Perl 5.8 Unicodeメモ]
URLリンク(www.rwds.net) (修正)
URLリンク(www.namazu.org)
URLリンク(www.lr.pi.titech.ac.jp)


4:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/21 12:24:39
1 URLリンク(pc.2ch.net)
2 URLリンク(pc3.2ch.net)
3 URLリンク(pc2.2ch.net)
4 URLリンク(pc2.2ch.net)
5 URLリンク(pc5.2ch.net)
6 URLリンク(pc5.2ch.net)
7 スレリンク(tech板) (事故により消滅)
8 スレリンク(tech板) (事故により消滅)
9 スレリンク(tech板)
10 スレリンク(tech板)
11 スレリンク(tech板)
12 スレリンク(tech板)
13 スレリンク(tech板)
14 スレリンク(tech板)
15 スレリンク(tech板)
16 スレリンク(tech板)
17 スレリンク(tech板)
18 スレリンク(tech板)
19 スレリンク(tech板)
20 スレリンク(tech板)


6:デフォルトの名無しさん
08/09/21 12:25:07
[過去スレ2]
21 スレリンク(tech板)
22 スレリンク(tech板)
23 スレリンク(tech板)
24 スレリンク(tech板)
25 スレリンク(tech板)
26 スレリンク(tech板)
27 スレリンク(tech板)
28 スレリンク(tech板)
29 スレリンク(tech板)
30 スレリンク(tech板)
31 スレリンク(tech板)
32 スレリンク(tech板)
33 スレリンク(tech板)
34 スレリンク(tech板)
35 スレリンク(tech板)
36 スレリンク(tech板)
37 スレリンク(tech板)


7:デフォルトの名無しさん
08/09/21 12:37:52
すれ立て乙

8:デフォルトの名無しさん
08/09/21 14:28:51
もういいです

9:デフォルトの名無しさん
08/09/21 14:42:33
同感だが、ないと寂しいのも事実

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

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

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

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

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

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

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

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


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

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

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

17:デフォルトの名無しさん
08/09/23 17:39:20
>>16
cpan にあるなあ
URLリンク(search.cpan.org)
求めるものかどうか知らんけど。

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

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

20:デフォルトの名無しさん
08/09/23 18:52:06
(??{})

いや、なんでもない

21:デフォルトの名無しさん
08/09/24 10:13:37
>>19
<q cite="URLリンク(www.kt.rim.or.jp)">
シンボルテーブルの別の使い方は、“定数”スカラーを生成するためのものです。

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

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

23:デフォルトの名無しさん
08/09/26 06:39:52
スレリンク(operate板:210番)

perlで書くとこうなる

24:デフォルトの名無しさん
08/09/26 11:14:17
Perlを勉強してやる!


25:デフォルトの名無しさん
08/09/26 14:32:07
>>23
read.cgiはCで書かれてるつーの。

26:デフォルトの名無しさん
08/09/26 15:14:43
>>24
つ、通報しま

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

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

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

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

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

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

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

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

31:デフォルトの名無しさん
08/09/27 18:27:16
URLリンク(www.aoky.net)

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

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

32:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/27 18:50:31
>>30
Levenshtein距離とか

34:デフォルトの名無しさん
08/09/27 19:33:23
>>32
Javaで言えばただのtoStringじゃん

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

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

37: ◆TWARamEjuA
08/09/27 22:49:21 BE:654023-2BP(7089)
(・o・)ポカーン

38:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/27 23:15:21
「い」が抜けたorz...


40:デフォルトの名無しさん
08/09/27 23:27:27
「でもいい」も抜けてたな。
酒飲んで書き込むもんじゃねえなあ

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

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

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

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

よろしくお願いします。

44:デフォルトの名無しさん
08/09/28 01:59:56
マンドクセー
最長と最短

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

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

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

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

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

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


48:デフォルトの名無しさん
08/09/28 21:15:00
perlはそのうちこうなる↓
スレリンク(news板)

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

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

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

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

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

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

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


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

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

55:デフォルトの名無しさん
08/09/30 07:11:06
おまいら、eclipse + padwalker + epic
使ってる?

56:デフォルトの名無しさん
08/09/30 08:21:44
URLリンク(builder.japan.zdnet.com)
ここみたら、perlのエディターが

Perl

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

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

57:デフォルトの名無しさん
08/09/30 08:51:27
1級perl検定

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

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

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

58:デフォルトの名無しさん
08/09/30 09:01:22
URLリンク(www.donzoko.net)
ここに書いてあるんだが、ひょっとして
モジュール同士で相性が悪いってことはあるのか?

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

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

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

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

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

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

61:デフォルトの名無しさん
08/09/30 13:08:48
>>60
splice

62:デフォルトの名無しさん
08/09/30 13:21:49
>>61

できました

63:デフォルトの名無しさん
08/09/30 13:41:24
Perl::Critic
ってなんなのかなぁ?

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

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

65:デフォルトの名無しさん
08/09/30 14:09:56
URLリンク(blog.nqou.net)
ここに書いてある
perltidy
ってのをいれようと思ったんだが、
ActiveperlのPPMには入っていないようだ。

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

66:デフォルトの名無しさん
08/09/30 14:14:28
URLリンク(googlewhacks.blogspot.com)

いったいこれはなんだー

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

68:デフォルトの名無しさん
08/09/30 15:19:21
perlcritic
使い方がいまいちよくわかんね。

69:デフォルトの名無しさん
08/09/30 19:15:02
eclipse + padwalker + epic
でperlなのだが、

prin

って打ったときに、
print
printf

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

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

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

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

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

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

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

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

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

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

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

76:デフォルトの名無しさん
08/10/02 01:03:19
>>75

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


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

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

79:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/03 18:26:15
>79
WebProg板へ行った方が的確な回答が得られるんじゃないかな。


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


81:デフォルトの名無しさん
08/10/03 18:27:33
すでにWebProgにマルチしてるよコイツ

82:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/03 22:32:19
追記:PERLバージョン5.10.0です
新バージョンに対応してるDBD::mysqlがないということでしょうか

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

85:デフォルトの名無しさん
08/10/03 23:47:26
>>82
cpan使えば?

86:デフォルトの名無しさん
08/10/04 12:29:01
スレリンク(prog板:60番)
これはどういうことだ

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

88:デフォルトの名無しさん
08/10/04 17:40:03
Mail::Sendmail

これの正しい発音は、

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

で合ってる?

89:デフォルトの名無しさん
08/10/04 18:39:13
滅入る 殺殺 千度滅入る

90:デフォルトの名無しさん
08/10/04 19:00:16
Acmeはちゃんとアクメって読めよ

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

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

92:デフォルトの名無しさん
08/10/04 19:34:12
はあ

93:デフォルトの名無しさん
08/10/04 20:34:36
日本語でおk

94:デフォルトの名無しさん
08/10/04 20:47:45
globれ

95:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/04 22:30:44
200個のファイルを読み込みたいのだよ。
200個分のファイルを読むように ソースコードを書くのが 手間がかかりすぎるやん?
2000行ぐらい書くことになるかもしれない。
だから、 ファイル名を連番にして、 
200行ぐらいの短くて分かりやすいコードは書けないのでしょうか?

97:デフォルトの名無しさん
08/10/04 22:33:04
>>91
my $a;
$a="log001";
print "$a".".txt\n";

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

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

98:デフォルトの名無しさん
08/10/04 22:36:07
>>94
なかった

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

100:デフォルトの名無しさん
08/10/04 22:37:58
>>98
何がないんだよ

101:デフォルトの名無しさん
08/10/04 22:41:07
globでえーやん

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

103:デフォルトの名無しさん
08/10/04 23:03:50
$varなんかどこに書いてあるんだよ

104:102
08/10/04 23:05:46
じゃあ元通りの "$a"

105:デフォルトの名無しさん
08/10/05 04:55:51
>87
改行の仕方がおかしいせいで別の意味に取れる

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


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

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

109:デフォルトの名無しさん
08/10/06 10:24:45
質問者もひどいが回答者もひどいという話か

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

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

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


112:デフォルトの名無しさん
08/10/07 01:44:45
if じゃなくて while の条件式じゃないのかな。

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

114:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/07 12:46:41
久し振りにPerl/Tkをやったら、すっかり忘れている。

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

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

117:デフォルトの名無しさん
08/10/07 12:58:49
>>116
なるほど、そういうカラクリですか
サンクス

118:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/07 18:04:49
>>111-113
>>118
サンクス
可能性としては、単なるうっかりか、次のマッチのために使っていたということっすね

120:デフォルトの名無しさん
08/10/07 18:17:13
日本で一番Perlを操れる人は小飼弾氏ですか?

121:デフォルトの名無しさん
08/10/07 18:25:49
小飼ってまだ生きてるの?

122:デフォルトの名無しさん
08/10/07 18:38:21
URLリンク(www.yahoo.co.jp)

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

Yahoo! JAPAN

123:122
08/10/07 18:39:41
タイトルが無い場合はURL

124:デフォルトの名無しさん
08/10/07 18:46:44
>>120
ちがうだろ


125:デフォルトの名無しさん
08/10/07 18:52:55
>>122
支離滅裂

126:デフォルトの名無しさん
08/10/07 18:55:37
URLリンク(www.aimix.jp)
これを改造で良いのかな?

127:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/07 19:42:29
$host = fff.co.jp;
print $host, "\n";

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

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

130:デフォルトの名無しさん
08/10/07 20:55:24
そうです

131:デフォルトの名無しさん
08/10/07 21:02:20
>>130
サンクス
一つ賢くなりました

132:デフォルトの名無しさん
08/10/07 21:29:48
>>122
scraper

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


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

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

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



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

138:デフォルトの名無しさん
08/10/10 00:22:17
まず日本語のお勉強をしましょうね。

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

140:デフォルトの名無しさん
08/10/10 06:06:59
日本語でおk

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

142:デフォルトの名無しさん
08/10/10 09:30:14
「ソフトウェア」の意味がわかってないので変てこになっているのか?

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

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

145:デフォルトの名無しさん
08/10/10 10:23:20
>>144
> ソフトウェアはソフトウェアプログラミングのことを言ってます。

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


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

147:デフォルトの名無しさん
08/10/10 11:00:01
アプリケーションソフトとは?
って話になるだろ・・・

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

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

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

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

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

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

154:デフォルトの名無しさん
08/10/10 11:58:13
いろいろ

155:デフォルトの名無しさん
08/10/10 12:01:47
オナヌー

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

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

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

158:デフォルトの名無しさん
08/10/10 12:27:14
・エロ画像巡回収集、サムネイル生成、整理
・エロ動画巡回収集、解凍、整理

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

159:デフォルトの名無しさん
08/10/10 13:20:15
それPlaggerでできるよ!

160:デフォルトの名無しさん
08/10/10 13:38:48
エロは偉大だなw

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

162:デフォルトの名無しさん
08/10/10 14:02:18
自宅でgoogleを作った

163:デフォルトの名無しさん
08/10/10 14:03:22
なんだそれは

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

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




わかるような情報を


165:デフォルトの名無しさん
08/10/10 14:48:32
>>163
おっと、「自宅でgoogle」を作った。な。

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




166:デフォルトの名無しさん
08/10/10 14:52:39
>>164
つNet::Interface

167:デフォルトの名無しさん
08/10/10 14:53:24
>>164
ええと…… 言周 言周 言周 ……Net::Interfaceはちがう?

168:デフォルトの名無しさん
08/10/10 16:38:13
Perol

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

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



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

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

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

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

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



173:デフォルトの名無しさん
08/10/10 17:26:17
>>169
司令官が出現しました!!

174:デフォルトの名無しさん
08/10/10 17:51:42
unicode文字列にデコードされている前提で、

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

でいいんじゃね?

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

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

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

>>175
買って損はない

177:デフォルトの名無しさん
08/10/10 20:58:11
>>176
サンクス
買ってみます

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

179:デフォルトの名無しさん
08/10/10 21:27:50
>>178
了解しました

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

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

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

182:デフォルトの名無しさん
08/10/11 01:53:16
>>180のオススメのPerlの本は何?

183:デフォルトの名無しさん
08/10/11 02:01:32
本は要らない

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

185:デフォルトの名無しさん
08/10/11 09:17:50
今プログラミングPerl久しぶりに開いてみたら・・・

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


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

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


188:デフォルトの名無しさん
08/10/11 16:29:55
ネタに亀レス(w

189:デフォルトの名無しさん
08/10/11 17:31:11
なんだこの珍問答

190:デフォルトの名無しさん
08/10/11 17:48:10
どうかおめこ干しを

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

192:デフォルトの名無しさん
08/10/12 22:25:09
アルファがベータをカッパらったらイプシロンした

まで読んだ。

193:デフォルトの名無しさん
08/10/13 06:14:15
>>191
まず周囲の空気を読む事から覚えろw

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

195:デフォルトの名無しさん
08/10/13 09:33:28
>>194
> 用語や用法のミスはあまり問題ではない。

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



196:デフォルトの名無しさん
08/10/13 10:59:33
入門書くらい読め

197:デフォルトの名無しさん
08/10/13 12:32:51
>>196
結局それに尽きる


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

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

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

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

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

202:デフォルトの名無しさん
08/10/13 22:20:19
>>201
確かに。

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

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

203:デフォルトの名無しさん
08/10/13 22:24:33
リャマ本の第5版って翻訳されないのかな?

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

205:デフォルトの名無しさん
08/10/14 05:27:51
>>204
ストラウストラップ教本 の方がまだ面白い

206:デフォルトの名無しさん
08/10/14 06:11:35
google code search以上の物が出来るとは到底思えない

207:デフォルトの名無しさん
08/10/14 09:55:11
>>204
インクリメンタルに検索できるやつにしてね。


208:164
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/14 22:41:55
XML::Tidyじゃなくなるけど、
XML::Liberal+XML::LibXMLなんて組み合わせは?

212:デフォルトの名無しさん
08/10/14 23:18:27
>>211
ありがとうございます。
試してみます。

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

214:デフォルトの名無しさん
08/10/15 12:59:01
>>213
URLリンク(www.kt.rim.or.jp)

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

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

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

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

216:デフォルトの名無しさん
08/10/15 16:47:01
スレリンク(prog板:168番)
この人小学生からperlやってるってよ

217:デフォルトの名無しさん
08/10/15 18:05:05
>>214
さんくす
Perlの古い書き方だったんですね

218:デフォルトの名無しさん
08/10/15 20:12:37
Perlに古いも新しいもない。

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

220:デフォルトの名無しさん
08/10/16 00:57:28
律儀な人ね

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

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

223:デフォルトの名無しさん
08/10/17 03:41:29
無名の関数ですね^^

224:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/17 12:55:36
>>223
違うとマジレス。

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

226:デフォルトの名無しさん
08/10/17 14:09:39
>>221
URLリンク(www.kt.rim.or.jp)

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

228:デフォルトの名無しさん
08/10/17 19:11:14
ref

229:デフォルトの名無しさん
08/10/17 19:13:16
>>227
ref

230:デフォルトの名無しさん
08/10/17 19:22:50
>>228-229
サンクス

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

232:デフォルトの名無しさん
08/10/17 21:36:23
>>231
デバッグフラグ立てて動作トレース

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

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

吊ってきます…

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

236:デフォルトの名無しさん
08/10/18 11:39:28
『LinuxでWord文書をテキストファイルに変換するには』
URLリンク(www.atmarkit.co.jp)

Antiword is a free MS Word reader
URLリンク(www.winfield.demon.nl)

OpenOffice.org
URLリンク(ja.openoffice.org)

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

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

239:デフォルトの名無しさん
08/10/19 12:05:47
while each

240:デフォルトの名無しさん
08/10/19 12:11:04
foreachで出来るだろ?

241:デフォルトの名無しさん
08/10/19 12:27:00
>>238
そういう意味じゃないんです…

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

242:デフォルトの名無しさん
08/10/19 12:36:10
foreach $hash_ref (@foo) {
$hash_ref->{bar}
}

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

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

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

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

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



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

URLリンク(perldoc.jp)

URLリンク(fleur.hio.jp)

URLリンク(homepage3.nifty.com)


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

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

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


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

250:デフォルトの名無しさん
08/10/19 17:26:11
>>249
マニュアル見れ

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

252:デフォルトの名無しさん
08/10/19 18:32:45
マニュアル読まないヤツ大杉

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

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

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

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

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

255:デフォルトの名無しさん
08/10/21 23:10:53
>>254
おまえならやれる。

256:デフォルトの名無しさん
08/10/21 23:29:51
Perl単体じゃあ家計簿は無理じゃない?
Perl/Tk使うのかな。

257:デフォルトの名無しさん
08/10/21 23:56:14
>>256
っ[Web]

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


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


260:デフォルトの名無しさん
08/10/22 13:06:56
家計簿なんてExcelでいいじゃん

261:デフォルトの名無しさん
08/10/23 00:28:09
>>256
> Perl単体じゃあ家計簿は無理じゃない?

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

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

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

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

263:デフォルトの名無しさん
08/10/23 20:36:56
URLリンク(www.google.com)

pythonにも負けてる(藁

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

265:デフォルトの名無しさん
08/10/24 14:50:59
>>264
できる


266:デフォルトの名無しさん
08/10/24 14:58:18
>>264
つ-Pオプション

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

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

268:デフォルトの名無しさん
08/10/24 23:35:36
きみの能力しだい。

269:デフォルトの名無しさん
08/10/24 23:38:16
>>267
もちろんできる。できない理由はない。


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

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


272:デフォルトの名無しさん
08/10/25 01:59:01
じゃあ1円

273:デフォルトの名無しさん
08/10/25 07:03:27
進まねぇよ

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

275:デフォルトの名無しさん
08/10/25 16:02:27
リファレンス使えばいいのでは?

276:デフォルトの名無しさん
08/10/25 16:17:22
あるいは古式ゆかしく配列を使うか


277:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/25 23:08:28
>>277
とりあえずNet::Telnet使えば?

279: ◆TWARamEjuA
08/10/25 23:10:30
cronで5分ごとに\nを送信してあげる別プロセスを作っておく。

280:デフォルトの名無しさん
08/10/25 23:49:42
レスあんがあちょです

>>278
Net::telnetは

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

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

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

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

282:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/26 16:12:50
>>283
自己解決。migrateを使うのを諦めて、appendとfetchで処理しました。
お騒がせスマソ。

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

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

宜しくお願いします。


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

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

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

289:デフォルトの名無しさん
08/10/27 15:30:10
>>288
うん、とっととPerlのことを忘れてPythonに移れ。

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

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

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

292:デフォルトの名無しさん
08/10/27 16:06:30
リファラー見るとかhiddenで何か持たせるとかボタン名変えるとか

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


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

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

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

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

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

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

298:デフォルトの名無しさん
08/10/28 17:56:07
日本語で

299:デフォルトの名無しさん
08/10/28 20:45:57
>>297
URLリンク(fleur.hio.jp)
URLリンク(perldoc.jp)
URLリンク(perldoc.jp)
>>2

300:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/28 23:39:13
TripletaiLは使ったことないが、「うまく行きません」とやらの詳細を書くべきだな。

302:デフォルトの名無しさん
08/10/28 23:45:21
>>301
ああ、ごめんなさい。

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

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

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

303:デフォルトの名無しさん
08/10/29 00:40:51
webprog池

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

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

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


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

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

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

309:デフォルトの名無しさん
08/10/31 23:55:58
>>308
emacs または meadow


310:デフォルトの名無しさん
08/10/31 23:56:23
OSは?

311:デフォルトの名無しさん
08/11/01 00:07:23
板違いすぎるだろ…

312:デフォルトの名無しさん
08/11/01 15:06:35
>>308
Notepad++

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

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




314:デフォルトの名無しさん
08/11/02 14:00:30
>>313
質問してないでソースコード読め。

315:デフォルトの名無しさん
08/11/02 18:17:25
イブジェクト指向

316:デフォルトの名無しさん
08/11/02 18:21:46
英語でいうと、 ibject oriented

317:デフォルトの名無しさん
08/11/02 19:05:20
イブジェマスジー?

318:デフォルトの名無しさん
08/11/02 19:45:14
オブイェークト指向

319:デフォルトの名無しさん
08/11/02 23:19:24
学校に

「CGI/Perl リファレンス」

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

320:デフォルトの名無しさん
08/11/02 23:28:09
>>319
URLリンク(ja.wikipedia.org)
URLリンク(ja.wikipedia.org)

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

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

322:デフォルトの名無しさん
08/11/02 23:57:19
LWP::UserAgent

323:デフォルトの名無しさん
08/11/03 00:27:35
>>321
URI::Fetch

324:デフォルトの名無しさん
08/11/03 02:02:59
>>306
なぜエラーにならなければならないの?

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

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

327:デフォルトの名無しさん
08/11/03 02:08:47
>>321
CPAN LWP::Simple検索してサンプル試してみ

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

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



329:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/04 01:36:33
>>392
ありがとうございます。
言われて気づいてみたら、ppm-shellってのがあるんですね。
最近のActivePerlはGUI版PPMしか無いのかと思ってました。


331:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/07 18:48:53
>>331
まさかファイルをエクスプローラ上でクリックして動かしてる?
それじゃダメだ
まずコマンドプロンプトを起動してそこで

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

で実行しないと

333:デフォルトの名無しさん
08/11/07 18:55:09
>>331
定番の入門書リャマ本
URLリンク(www.oreilly.co.jp)


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

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

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

336:デフォルトの名無しさん
08/11/07 19:11:31
今は21世紀だぜ?なんでまた20世紀の古い本を・・・

337:デフォルトの名無しさん
08/11/07 21:14:29
>>336
じゃあ、2008年6月発売のを

URLリンク(oreilly.com)

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

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

339:デフォルトの名無しさん
08/11/08 17:11:08
質問です。

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

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

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

341:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/09 08:37:45
ハッシュにリストを代入するときキーに相当するところに同じ値が複数あると
どれが優先されるかは決まってたっけ?

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

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


343:デフォルトの名無しさん
08/11/09 10:27:31
マニュアル代読サービスに頼めよ

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



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

346:デフォルトの名無しさん
08/11/09 18:03:31
いや、少なくとも考えて分かる類のものじゃないでしょ。

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

use Data::Dumper;

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

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

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

349:デフォルトの名無しさん
08/11/09 19:37:55
俺なんかの説明じゃあれなので、Perlクイズの該当箇所のバックナンバー
URLリンク(archive.mag2.com)

350:デフォルトの名無しさん
08/11/09 19:45:50
>>348-349


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

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


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

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

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

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

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

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

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

358:デフォルトの名無しさん
08/11/09 21:21:07
バッドノウハウ地獄

359:デフォルトの名無しさん
08/11/09 21:23:45
だがperlは常に信用できない。気持ち的に。

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

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

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

363:デフォルトの名無しさん
08/11/10 00:20:23
日本語が通じないらしい

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

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



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

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

367:デフォルトの名無しさん
08/11/10 01:55:02
諸悪の根源は、

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

となってしまったこと。

368:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/10 03:06:03
いや、言語仕様と実装の話だよ。

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

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

372:デフォルトの名無しさん
08/11/10 10:20:20
まぁそういうことにしたいよな。

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

374:デフォルトの名無しさん
08/11/10 13:34:04
>>373
関係ないと思うよ

375:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/10 19:20:54
>>374
__END__リテラルって意味わからんので、__DATA__セクションのことなんじゃないだろうか?

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

377:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/10 20:46:37
>>375
初心者ですが、これは襲撃でした。
自然な思考法なら、perl4の結果を期待するのではないでしょうか?
(それは、初心者だけか)

379:デフォルトの名無しさん
08/11/10 20:47:15
>>378
襲撃でなく、衝撃です。

380:デフォルトの名無しさん
08/11/10 21:09:12 BE:212256083-PLT(54321)
襲撃wwww

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

ほんとperlは地獄だぜ。HAHAHAHAHA

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

383:デフォルトの名無しさん
08/11/11 01:36:13
perl = CGI

CGI = perl

384:デフォルトの名無しさん
08/11/11 07:33:41
>>382 モチツケ


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

386:デフォルトの名無しさん
08/11/11 07:59:06
もしそうなら引っ越す

387:デフォルトの名無しさん
08/11/11 08:46:36
>>385
言える

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

389:デフォルトの名無しさん
08/11/11 09:24:08
>>385
解釈による。

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

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


391:デフォルトの名無しさん
08/11/11 10:12:12
つまり、
サルが進化したものが人間。
perl が進化したものがruby/python
そゆこと?

392:デフォルトの名無しさん
08/11/11 10:16:25
>>391
> サルが進化したものが人間。
> perl が進化したものがruby/python

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

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


394:デフォルトの名無しさん
08/11/11 10:52:56
>>393
初心者はPythonがお勧め。

395:デフォルトの名無しさん
08/11/11 11:12:48
>>393
Python

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


ますますわけわかめ

397:デフォルトの名無しさん
08/11/11 12:21:43
>>396 モチツケ



398:デフォルトの名無しさん
08/11/11 12:56:02
>>396
それはええやろw

399:デフォルトの名無しさん
08/11/11 13:00:42
>>393
Perl。

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

400:デフォルトの名無しさん
08/11/11 13:55:08
いまからPerlをやるって人って自虐者?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch