Perlについての質問箱 40箱目at TECH
Perlについての質問箱 40箱目 - 暇つぶし2ch2:デフォルトの名無しさん
09/05/30 06:14:51
[プログラミング自体の経験が無い奴はまずココを読め]
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:デフォルトの名無しさん
09/05/30 06:14:58
[モジュール]
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:デフォルトの名無しさん
09/05/30 06:15:03
# [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:デフォルトの名無しさん
09/05/30 06:15:11
[過去スレ1]
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:デフォルトの名無しさん
09/05/30 06:15:14
[過去スレ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板)
38 スレリンク(tech板)
39 スレリンク(tech板)

7:デフォルトの名無しさん
09/05/30 09:10:02
おちんちんかゆい

8:デフォルトの名無しさん
09/05/30 12:58:12
perlって変数は必ずmyつけたレキシカル変数にするのがセオリーなんですか?


9:デフォルトの名無しさん
09/05/30 13:19:55
>>8
「セオリー」の使い方が間違ってるような木が駿河・・・

use strict を宣言すると、変数を my で宣言することを強制される。

スクリプト言語系にありがちな
変数名の単純なタイプミスを事前に防げるわけだ。
必須ではないが、長いスクリプトを書くなら use strict と my は使用した方がいい。
短いスクリプトならどうでもいいいよ。

10:デフォルトの名無しさん
09/05/30 13:21:21
VB の
Option Explicit
みたいなもん

11:デフォルトの名無しさん
09/05/30 14:12:12
短いものならourとか使う必要もないだろうし

12:デフォルトの名無しさん
09/05/31 04:50:06
みんな our って使ってるの?
なんか $::abc って書いてしまう。

明確な理由はあるけど長くなるから書かない。

13:デフォルトの名無しさん
09/05/31 06:08:26
$::abcだとmod_perlの時に困る

14:デフォルトの名無しさん
09/06/02 04:25:48
処理体系にかかわらずPerl内部のtime_t型をlong long intで扱うことは可能ですか?

15:デフォルトの名無しさん
09/06/02 11:11:02
splitで分割したときの挙動でよく分らないのですが

-----------------------
my @a = split(',', ',,,');
print scalar(@a), "\n"; # 「0」と表示される。

-----------------------
my @b = split(',', 'a,,,a');
print scalar(@b), "\n"; # 「4」と表示される。

-----------------------
最初に書いた split(',', ',,,')でなぜ空の配列が返ってくるのが
よく理解できません。

split(',', 'a,,,a'); で4つ返ってくるなら、',,,'なら3つか4つ
返って来そうな感じがするのですが、教えて頂けないでしょうか。


16:デフォルトの名無しさん
09/06/02 11:36:55
>>15
split [pattern [, expr [, limit] ] ]
でlimitを省略すると、最後の空フィールドは返されない。
split(',', ',,,')は全て空フィールドだから空のリストが返ってくるのだと思われる。

17:デフォルトの名無しさん
09/06/02 14:46:37
splitの第一引数がパターンというのは慣れるまで違和感あるな
そっちの方が便利なのは判ってるけど、
普通は区切り文字が決まってるから、
わざわざ遅くなりそうな正規表現で書くのに抵抗がある

18:デフォルトの名無しさん
09/06/02 18:33:33
言語云々以前の問題なんですが
さっきインストールファイルをダウンロードしたんですけど
実行しようとすると
"インストールパッケージを開くことができませんでした。アプリケーションベンダに問い合わせ、
このパッケージが有効なWindowsインストーラパッケージであることを確認してください。"
が出て先に進めないんですけどどうしたらいいんですか?教えてください。

19:デフォルトの名無しさん
09/06/02 18:51:30
壊れてるんじゃね
MD5チェックサムとかあれば試してみれば?

まあブラウザのキャッシュ消してからDLし直せばいけると思うけど。

20:デフォルトの名無しさん
09/06/02 20:18:14
>>19
perlのバージョンを落としたら 5-10-0 1004 (?)から 5-10-0 1005
に変えて実行したらできました
なんだったんでしょうか・・・

21:sage
09/06/02 20:19:04
すいません20ですが
1005から1004でした
1レス無駄にしてすいませんでした。

22:デフォルトの名無しさん
09/06/02 22:33:52
>>20
ダウンロードの時にファイルが壊れたんだろ。

23:デフォルトの名無しさん
09/06/03 00:26:58
>>16
ありがとう御座います。
最後の空フィールドは返されないって仕様なんですね。

24:デフォルトの名無しさん
09/06/03 02:19:01
my @member = qw/あ い う え お/;
print $member[0],"\n";
print $member[4],"\n";

これを実行したんですが、
結果が




と表示されるはずが

あ い う え お

と表示されるんですがなぜなんですか?

25:デフォルトの名無しさん
09/06/03 02:22:42
デバッグすればわかる


26:デフォルトの名無しさん
09/06/03 02:34:56
2chからスクリプトをコピペしたら謎のエラーで動かなくて、
ちょうどそれが漢字の取り扱いで困ってた時だから、
インデントの全角スペースがエラーだと言われてるのに暫く気付かなかったことがある

27:デフォルトの名無しさん
09/06/03 06:54:49
>>24
「あ」と「い」の間が全角スペースになってるだろ。
>>26
俺は全角スペースは下線が出るようにエディタの設定をいじってる。
0とOも0に斜線がつくなどマ向けのフォントを使用。

28:デフォルトの名無しさん
09/06/03 11:46:45
全角スペースは薄く四角で表示するようにしてたけど、
うざいから止めたな
.plの時だけ設定しとこう

29:デフォルトの名無しさん
09/06/03 12:21:21
use LWP::Simple;
use threads;
for(1..10){
push @A,threads->new(sub{get"URLリンク(www.2ch.net)"})
}
for(@A){$_->join}

このコードのどこが間違ってるんでしょう?

30:デフォルトの名無しさん
09/06/03 12:51:22
間違ってなくない?

31:デフォルトの名無しさん
09/06/03 12:55:42
pushの最後にセミコロン忘れてるとか?

32:デフォルトの名無しさん
09/06/03 12:59:26
>>31
おい・・・

33:デフォルトの名無しさん
09/06/03 13:08:47
DDoSの試みなんじゃねえの。

34:29
09/06/03 13:12:55
前スレでレスしようとしたら規制食らっちゃってできなかったんだけど
29のコードをcygwinの上で実行するとsegmentation faultが発生します。
cygwinの上でのPerlではスレッドは使っちゃいけないということにして
おいた方がいいのかな?めんどくさいけどC#ならこんなことはないので

35:デフォルトの名無しさん
09/06/03 23:10:22
うだうだ書いてる暇があったら、実行環境をかけよ。
女か?

36:デフォルトの名無しさん
09/06/04 00:07:32
前に threads で遊んでたとき、初めは29みたいな書き方してたけど何か不具合が出て
threads::joinable なものだけ join() するように書き換えた記憶がある。
不具合の詳細は忘れた。

ていうか、use Socket で直接投げるよりはウェイトかかるけど、撃つな。

37:デフォルトの名無しさん
09/06/04 03:45:10
たまに思うのだが、
最後はセミコロン無しでもいいよ、って仕様になんか意味があるんだろうか。

ワンライナー?

38:デフォルトの名無しさん
09/06/04 04:01:53
区切りなんだから、無いのが正解
pascalとかは、余分なセミコロンはエラーになる

39:デフォルトの名無しさん
09/06/04 05:43:50
セミコロン区切りのCSVで、行末にセミコロンが無いのと同じ

40:デフォルトの名無しさん
09/06/04 06:14:32
>>37
Larry Wallは、
for(1..10){print}
みたいな書き方ができるから、とも言ってた。

41:デフォルトの名無しさん
09/06/04 06:16:46
逆に、
$a = {
 'abc' => cde,
 'fgh' => ijk,
 'lmn' => opq,
};
の余計なカンマは(Larry Wallが個人的に)推奨している。

42:37
09/06/04 07:26:48
なるほどなあ。

>41
それが出来ない文法って、軽くイラッ☆と来るよな。
昔のCのenumとか。


43:29
09/06/04 11:18:53
ActivePerlでやったらなんの問題もなかったです
パスの扱いだけは注意が必要ですが
Windowsでは今度からなるべくこっち使うことにします

44:デフォルトの名無しさん
09/06/04 17:34:13
コンマが余計でもokなのって多数派?

45:デフォルトの名無しさん
09/06/04 17:47:59
多数かどうかは知らんが、嬉しい配慮ではあるな。

46:デフォルトの名無しさん
09/06/04 19:22:20
>>44
コンマは余らせない方針の人って見たことないよ。

47:デフォルトの名無しさん
09/06/05 01:36:59
Perlのコミュニティってなんかこあい><
知識の少ない学生がおいそれと入っていっても歓迎される…少なくとも冷遇されないもんなんでしょうか

共有されてる情報は欲しいんだけど一歩を踏み出せないです

48:デフォルトの名無しさん
09/06/05 02:14:00
言語仕様だけ見ても、上手い書き方がピンと来ないケースが多いんだよな
試行錯誤した末に、最適の書き方が出来るように最初から作られてることに気付く
Cとかの固い言語では有り得ない

49:デフォルトの名無しさん
09/06/05 02:23:05
cのパーサはコンパイラの授業を取った学生なら作れなきゃ不可だけど、
perlのパーサは無理だよね。

50:デフォルトの名無しさん
09/06/05 08:19:06
>>48
Cはコンパイラに都合のいいようにできてるから。
Perlは書く人主体で設計されており、本来コンパイラには不要な冗長性も
沢山含まれてるから当然と言えば当然。

51:デフォルトの名無しさん
09/06/05 09:49:29
prel の祖先は ed などのテキストエディタだからな。
ed に sh が合体したみたいなもん。
進化の系譜を書くとすると、こうなる。

ed --> sed --> awk --> perl
   sh ------------+

52:デフォルトの名無しさん
09/06/05 15:26:21
>>51
ちょっとその図には賛同しかねる。そんな単純な話じゃないと思うが。

53:デフォルトの名無しさん
09/06/05 16:33:35
じゃぁ、おまいが図を示せ。待ってるぞ。逃げるなよ。

54:デフォルトの名無しさん
09/06/05 16:40:50
こんなところであっさり示せたら「単純な話じゃない」という意見が嘘になるのでは。

55:デフォルトの名無しさん
09/06/05 17:05:59
sed --> awkはまちがい

56:デフォルトの名無しさん
09/06/05 18:16:23
こまけぇこ(ry

57:デフォルトの名無しさん
09/06/06 01:47:23
パーツを教えてやるよ。あとは自分で考えな。
sed C awk sh -->

58:デフォルトの名無しさん
09/06/06 03:20:39
sed --+--> perl --> php
C  --+
awk --+
sh  --+

簡単簡単

59:デフォルトの名無しさん
09/06/06 03:58:27
おまえら全然ちげーよ
これくらい常識で考えたら素人だってわかんだろーが
金 --> 銀 --> perl -->プレゼント
こうだよ!

60:デフォルトの名無しさん
09/06/06 07:28:53
perlの鬼があらわれた!

61:デフォルトの名無しさん
09/06/06 16:37:00
えーと、桃太郎伝説?

62:デフォルトの名無しさん
09/06/06 18:13:19
おまいら、よっぽどやることないんだな。

63:デフォルトの名無しさん
09/06/06 18:51:03
if ($a == 1) {$a = 0}
は、どうして
if $a == 1 {$a = 0}
と書けないんだろう
紛れないと思うんだが

64:デフォルトの名無しさん
09/06/06 18:56:59
$a = 0 if $a == 1;

65:デフォルトの名無しさん
09/06/06 19:02:26
{$a = 0; $b = 0} if $a == 1;
はできないけどな

66:デフォルトの名無しさん
09/06/06 20:33:09
>>63
if $a == $b{$a = 0}
は紛らわしくない?


67:デフォルトの名無しさん
09/06/06 21:19:22
$a=$a==1?0:$a;

68:デフォルトの名無しさん
09/06/06 21:55:37
$a == 1 && $a = 0;

69:デフォルトの名無しさん
09/06/06 22:15:38
指定したディレクトリにあるファイル、ディレクトリを全部他のディレクトリへ移動しようと思っています
また、移動先にファイル、ディレクトリがあったばあいは再帰的にマージしたいです現在はlinuxのmvコマンドを呼んでなんとかしてるんですが、
指定したディレクトリの最後が同一でない場合なんかに対応してないし、マージ機能を持ってないし、持ち悪い処理がいっぱいあってダメダメな感じです
こういうディレクトリの処理を簡単にできるモジュールはありますか?

70:デフォルトの名無しさん
09/06/06 23:00:53
>>63
ツッコミ所は色々あるが、たとえば、

if sub {$a = 0};

っていうことされたら困るだろ。subと{}は結合力が最も強い「項」であるので先に結合してしまう。
従って無名関数への参照が条件とコンパイラが解釈してしまう(んで構文エラー)。

loop_or_condition(xxx){yyy}の()と{}はセット。

71:デフォルトの名無しさん
09/06/06 23:07:26
>>70
通るが。
perl -e "print 'ok' if sub { $v = 1 }; print qq/\n/"

72: ◆TWARamEjuA
09/06/06 23:38:05 BE:2613964-BRZ(10072)
>>71
そりゃ通るでそ。。。
$ perl -e 'if sub {$a = 0}'
syntax error at -e line 1, near "if sub "
Execution of -e aborted due to compilation errors.

73:デフォルトの名無しさん
09/06/06 23:53:02
>>71
話読んでた?それは通るよ。 >>70で言う所のyyy loop_or_condition xxx構文じゃんかそれ。

74:デフォルトの名無しさん
09/06/07 00:12:44
>>70
いまいち理解できんけどそれじゃ

if(sub){$a = 0}

って文になるんじゃね?
sub のところに任意の関数をいれるってなら話は分かるが無名関数のくだりがようわからん

75:デフォルトの名無しさん
09/06/07 00:19:16
( )を必須にするんじゃなくて、
紛れない限りは通すのがperlらしい気がする

76:デフォルトの名無しさん
09/06/07 00:32:20
>>74
確かに。式中のsubは{...}が必須っぽいから
if sub {...} はエラーで当然だし、通すには if sub {...} {...} って書けばいいだけ

まぁ、これとは別に、ifに括弧を必須としている曖昧な構文が存在することは間違いないだろうけど

77:デフォルトの名無しさん
09/06/07 06:22:44
>>74
Perlの文法には「優先順位」ってのがあってだな。
「項」の結合は何よりも優先されることになっているのよ。
これはPerlの一貫した言語仕様。だから、

if sub {$a = 0}

は、残念ながらif (sub {$a = 0})と解釈されることになる。
Perlはそういうものなので、変な例外があると余計ユーザが混乱する。
これを覆したいなら自分で新しく言語作ってそこでやって下さい。

>>75
>>70に紛れるケースを示したが?

>>76
> まぁ、これとは別に、ifに括弧を必須としている曖昧な構文が存在することは間違いないだろうけど
詳しく。

78: ◆TWARamEjuA
09/06/07 09:03:53
>>69
URLリンク(search.cpan.org)
このあたりかしら?

79:デフォルトの名無しさん
09/06/07 12:10:20
>>77
いや、そういうことじゃなくて

if sub {$a = 1}

が意図してることが

if(sub){$a = 1}

となるんじゃないかと思った
それだったら普通に最初から通らんよね?
それで、例えば
foreach(@hoge){
if rmtree {$a = '/'}
}

なら言ってることが理解できるって話

80:デフォルトの名無しさん
09/06/07 12:43:09
んで結局何の話だったんだっけ

81:デフォルトの名無しさん
09/06/07 14:09:47
次のバージョンで括弧なくてもいいことにしても、互換性は失われないよな

82:デフォルトの名無しさん
09/06/07 15:36:22
Perl では未だ、bareword が非推奨ながら、しかしデフォルトで許されています。
従って、

if bareword { ... };

などとした時、名前空間に bareword() が存在すると、見た目の曖昧さを生じます。

# 個人的に Perl に限れば括弧が必須でなくなっても書いてしまう気はします。

83:デフォルトの名無しさん
09/06/07 15:59:06
>>82
いや、それ議論からずれてる。

84:デフォルトの名無しさん
09/06/07 17:59:41
今やってるプロジェクト、

 KENTを彷彿とさせる、Perl4なコード
 いかにもPerlって感じの、省略の美学バリバリのコード
 Cライクなコード
 オブジェクト指向っぽいコード

が混在している……。もうやだ……。


85:デフォルトの名無しさん
09/06/07 18:51:54
そんなもん屁の河童にこなしてこそPerl Wizard

86:デフォルトの名無しさん
09/06/07 21:34:42
>>85
Perl歴15年、同意です。

87:デフォルトの名無しさん
09/06/07 22:15:58
Perlなんて大キライ!
仕事だから、仕方なくやってるだけなんだからね!

88:デフォルトの名無しさん
09/06/08 01:55:34
自分で作る
という方向性だと、簡単な方がいいし、
他人に作らせる
だと、オブジェクト指向バリバリになる

まあ、オブジェクト指向だからといって、
タイプ数を増やさなければならないという法は無いのだが

89:デフォルトの名無しさん
09/06/08 17:26:46
可読性を取るのか効率を求めるか
今後このコードはどうゆう使われ方、扱われ方をされるのか・・・

ざっくり言えばニーズにマッチしたモノを作れるようになりたい

ってかこれって様々な言語、いや職種にすら限らない仕事一般の話だな

90:デフォルトの名無しさん
09/06/08 19:36:47
ディレクトリを取得する際、
$cur_dir = Cwd=getcwd() . "\\";

で取得しているのですが、ディレクトリ名に"("が含まれていると
それ以降の文字列が取得できなくなってしまうのですが、
対処法はありますでしょうか?

91:90
09/06/08 19:58:53
しまった文がぜんぜん足りてない・・・

>>90はその変数に格納された内容にバッチファイルのアドレスを足して
system($bat_pass);
みたいな形で使用しています。
(までしか認識さず、実行できない状態になっております。

92:デフォルトの名無しさん
09/06/08 20:17:16
ん?
use Cwd;
print $0, "\n", getcwd(), "\\\n";

C:\test(1)\test.pl
C:/test(1)\

93:デフォルトの名無しさん
09/06/08 20:41:23
文字列の連結の演算子 '.' を誰も使わない

94:デフォルトの名無しさん
09/06/08 20:46:54
>>89
迷った時は保守性の高いほう。
性能とのトレードオフが生じる時(いまどきそんなに多くない)はベンチマークで測定して、看過できないボトルネックが解消できると分かった場合にのみコメントの上チューニング。
大抵は迷っているので大抵は保守性の高いほうを選ぶ。
そうしない部分のほうを特例扱いにしてコメント及びドキュメントで注意喚起しておく。
経験上それが最も安く付く。
経験上そうもいかないことも多いが。

95:デフォルトの名無しさん
09/06/08 20:49:31
>>93
アレには若干のオーバーヘッドがあるのです。
本当に連結してひとつの文字列に変化させたい場合には使います。

96:デフォルトの名無しさん
09/06/08 21:35:25
>>94
スクリプトの使用期間が1ヶ月で、特急の受注でも同じ書き方するか?
規模にもよるが、俺だったら少々スパゲティでもいいから納期優先するな。
1ヶ月の間だけなら多少のスパゲティの内容の把握くらいできる。

97:デフォルトの名無しさん
09/06/08 22:27:31
すいませんperl初心者です。
ある二つのテキストファイルがあって、
ファイルAは名前と住所
田中東京
佐藤千葉
鈴木埼玉
のようにあって、
もうファイルBは
田中
鈴木
など名前だけがあります。

ファイルAから、ファイルBに名前がある人の所(上の礼では「田中東京」)などと
とりだしたいのですが・・・どのようにしたらよいでしょうか・・・。
マッチングやgrepを考えたのですがうまくいかないので。
実際は生物の遺伝子名で膨大なのでPerlなどプログラムを書かなければならないのですが・・・・


98:デフォルトの名無しさん
09/06/08 23:04:43
>>97

ファイルBから1行読んで
あとはファイルAを1行づつ読んではファイルBから読んだ1行と先頭一致するかどうかだけでは?

99:デフォルトの名無しさん
09/06/08 23:40:20
それAはともかくBも膨大だったらちょっと苦しくないか?

100:デフォルトの名無しさん
09/06/08 23:54:54
>>97
何がどう「うまくいかなかった」のか書かないと返事のしようがないな。
とりあえず自分が書いたコードをさらせ。

101:デフォルトの名無しさん
09/06/09 00:23:10
>>97
田中と東京に区切り文字はないの?
あれば区切ってデータベースにでも突っ込んで少しずつ検索すればいいんじゃね?

102:デフォルトの名無しさん
09/06/09 01:08:19
情報少なすぎ
マッチングやらgrepとか言っといて初心者だとか
どうやったらうまくいかなかったのかとか
取り扱いデータは改変されてるし

聞きたいならネタ隠すなよな・・・

103:デフォルトの名無しさん
09/06/09 02:09:50
>>97
ちなみに、

> 実際は生物の遺伝子名で膨大なのでPerlなどプログラムを書かなければならないのですが・・・・

こういう用途は古くからPerlが多用されていた分野だから、十分なライブラリと
ノウハウの蓄積があるぞ。

104:デフォルトの名無しさん
09/06/09 08:28:37
DB入れれば一番簡単


105:デフォルトの名無しさん
09/06/09 10:28:42
>>96
そもそも普通に書いてスパゲティになるのはおかしいw

たしかに書いてくるコードがことごとくスパゲティの奴って
いるんだが、どうしてできるのか不思議でしょうがないよ。
素直に書く方が圧倒的に楽だろ?

106:デフォルトの名無しさん
09/06/09 11:04:49
素直厨w

107:デフォルトの名無しさん
09/06/09 12:14:52
Encodeモジュールの質問です。
shiftjisで書かれたファイルから文字列を読み込んで、utf8でdecodeした場合、文字列の内容は復旧できないのでしょうか?
utf8でencodeしても元の文字列には戻らなくて困っています。
サンプルです。test.txtはshiftjisで書かれています。

use Encode;
open IN, "test.txt";
my $str = <IN>;
print $str;
my $miss = decode 'utf8', $str;
my $recover = encode 'shiftjis', $miss;
print $recover ;

コマンドプロンプトで実行しても元に戻りません。

108:デフォルトの名無しさん
09/06/09 12:27:58
shift-jisのファイルをutf8でdecodeしてまともになると思うほうがどうかしている。

109:デフォルトの名無しさん
09/06/09 12:52:06
テンプレ読めよアホウ。

110:デフォルトの名無しさん
09/06/09 12:56:37
>>108
アホ

111:デフォルトの名無しさん
09/06/09 14:44:32
use lib "lib";
use App::Config;
で、自作のpmを使いたいんだけど上手く読めない…。
Configにsub testって関数があって
print test(); ってやると

Undefined subroutine &main::test called at index.cgi line 11.

ってなる。
App::Config::test();ならちゃんと動く。
ちゃんとuse App::Config;って書いたのになんでエラーが出るんですか?
分かる方たすけてください!!



112:デフォルトの名無しさん
09/06/09 15:11:35
>>111
うまくエクスポートされていないだけだろ。

113:デフォルトの名無しさん
09/06/09 15:16:18
>>112
どおいうことですか?
是非詳しく教えてください!

114:デフォルトの名無しさん
09/06/09 15:18:01
>>111
Exporter 使ってる?
つかってるならlib 以下のディレクトリとパッケージ名がマッチしてない予感


115:デフォルトの名無しさん
09/06/09 15:26:02
>>114
つかってないです。

116:デフォルトの名無しさん
09/06/09 15:27:08
WindowsXP Pro
BlackJumboDog
ActivePerl 5.10.0 Build 1005
の環境で行ってます。

117:デフォルトの名無しさん
09/06/09 15:32:37
packageの後にExporterでシンボルをエクスポートする必要がある。
Exporterのマニュアル見れ。

118:デフォルトの名無しさん
09/06/09 15:55:04
>>117
えええ、いままでこんなことしてなかったのに…
ありがとうございます。
全てのサブルーチンをエクスポートするとした場合には
@EXPORT = qw(sub1 sub2 sub3 ...);って永遠に書かなきゃダメですか?
それと、use constantで定義した定数とかもuse Config;したところで
使えるようにしたいのですが、そういった場合はどうすればいいですか?
require使ったほうが早いですかね?


119:デフォルトの名無しさん
09/06/09 16:02:36
気のせいでした…
今までApp::Config::test();ってアクセスしてました(汗。
とっても勉強になりました!ありがとうございました!

120:デフォルトの名無しさん
09/06/09 16:13:08
>>118
> 全てのサブルーチンをエクスポートするとした場合には
そんな変なことをしたいのだったら、そもそもpackageするなよ。

121:デフォルトの名無しさん
09/06/09 16:37:47
どうしてもやりたければ

our @EXPORT = grep {defined &{$_}} keys %Hoge::;

とでもしとけばいいんでね? 勧めないが。

122:デフォルトの名無しさん
09/06/09 20:15:39
>>47
PHPのほうがいいよ

123:デフォルトの名無しさん
09/06/09 21:40:55
>>122
彼にPHPを勧める理由がわからん

124:デフォルトの名無しさん
09/06/09 22:01:39
>>47
Pythonのほうがいいよ

125:デフォルトの名無しさん
09/06/10 06:56:38
PHPコミュニティの方が厨房が多い。
Perlコミュニティはオッサンばっかりだ。
Rubyコミュニティは若いがなんかキモイ。

126:デフォルトの名無しさん
09/06/10 12:42:05
html::template 2.9の使い方が書いてある日本語サイトとかないですか?


127:デフォルトの名無しさん
09/06/10 13:57:08
新しいモジュールを使う度に解説を探すけど、
日本語でまともなのが見つかった試しがない

128:デフォルトの名無しさん
09/06/10 14:29:27
古い版の日本語マニュアルを見つつ、適当に差分を探すのがいいんじゃない?


129:デフォルトの名無しさん
09/06/10 14:32:53
解説かけるぐらいの人になると英語マニュアルで足りるので
よっぽどのモチベーションがないと日本語の解説って作られない
気がする。

130:デフォルトの名無しさん
09/06/10 15:13:17
ドキュメントの翻訳は、きちんと制度化しておかないと、元の更新に追従するのが
困難という法則。





131:デフォルトの名無しさん
09/06/10 17:10:15
簡単な部分は英語でも簡単に読めるし、
ニュアンスが微妙な部分は訳さずに原語を残した方がいい

結局、訳す意味がない

132: ◆TWARamEjuA
09/06/10 18:07:04 BE:2940293-BRZ(10072)
実際に動かしてみてから英文マニュアルやチュートリアルを眺めてみると、Jojoに英文が解せるようになってくるかと。

133:デフォルトの名無しさん
09/06/10 18:18:15
古ぼけた翻訳があることは、翻訳がないことより悪い。

134:デフォルトの名無しさん
09/06/10 18:18:57
つかよドキュメント文章、そんな難しくない多い。
でもよたくさん読む日本語速い


135:デフォルトの名無しさん
09/06/10 21:10:38
優秀サンプルあればドキュメント要らない

136:デフォルトの名無しさん
09/06/10 22:10:54
それはそうだね
cpanのドキュメントとかも、サンプルコードがあれば、ほぼ目的は達成できるしな

137:デフォルトの名無しさん
09/06/10 22:18:26
簡単な英文なら頑張れば読めるけど、検索とかが自分には難しいッス…

138:デフォルトの名無しさん
09/06/11 00:07:42
googleが記号を無視してくれるせいで、
特定の使い方について調べように見つからない

139:デフォルトの名無しさん
09/06/11 00:47:39
優秀なマニュアルは英語も簡単
この英文難しいなって感じたらそれはマニュアル書いた奴が説明下手ってことにしてる

140:デフォルトの名無しさん
09/06/11 01:09:55
>>138
Perlの調べ物はググる前にperldoc
ドキュメントのどこに書いてるかも分からないなら目次から見当つければいい
URLリンク(search.cpan.org)
URLリンク(search.cpan.org)

141:デフォルトの名無しさん
09/06/11 06:49:30
>>138
青らくだ買え

142:デフォルトの名無しさん
09/06/11 17:21:13
書籍は買ったほうがいいよ~
場合によっちゃ使い勝手はネットより良いw

Perlバリバリ使えるけど本なんか買ったことねーよって人いるかな?
おいらは駱駝とクックとエフェクティブくらいしか持ってない


143:デフォルトの名無しさん
09/06/11 18:30:10
ラクダは買ったけど、ほとんど読んでないな
リャマは続と併せて結構読んだ

でも一番読んだのは、フクロウだな。

144:デフォルトの名無しさん
09/06/11 20:57:58
フクロウっつーと正規表現だっけ?

145:デフォルトの名無しさん
09/06/11 21:13:09
>>142
perldocより青らくだ買えとは言わないが、
「本はネットがあるからいらない」って人は考えを改めた方がいい。
本でしか手に入らないものもあるし、ネットだと不便な情報もある。

146:デフォルトの名無しさん
09/06/11 21:26:33
本ってそんなに売れてないのか

147:デフォルトの名無しさん
09/06/11 22:21:38
>>146
じゃあなんでAmazonがブイブイ言わせてるんだ?
こないだも村上春樹が速攻で100万部突破したそうじゃねーか。


148:デフォルトの名無しさん
09/06/11 22:31:58
>>147
Amazonは本だけじゃないよ
村上春樹は、かなり異例。出版業はかなりやばいよ

149:デフォルトの名無しさん
09/06/11 22:48:20
>>148
Amazonは元々本が出発点だ。手を広げただけ。
そりゃ媒体が増えたからある程度は仕方ない。
音楽産業の凋落よりはマシだろ。

150:デフォルトの名無しさん
09/06/11 22:51:04
>>149
そんなの誰でも知ってるだろ。何得意げに語ってるの?
Amazonがブイブイ言わせてるのは、書籍の売り上げじゃないっていう話だろ?

151:デフォルトの名無しさん
09/06/11 22:51:34
ブログを見ると、
「献本でもらった」「献本でもらった」「献本でもらった」
「献本でもらった」「献本でもらった」「献本でもらった」「献本でもらった」
「献本でもらった」「献本でもらった」「献本でもらった」
ばかりなので、本を買う気なくした。

152:デフォルトの名無しさん
09/06/11 22:53:35
>>151
dan?
あれは仕方ない

153:デフォルトの名無しさん
09/06/11 22:55:19
もっと悪い例を出してそれよりマシとか言い訳するようになったら、
あとは人生転落するだけ。

154:デフォルトの名無しさん
09/06/11 23:07:44
つーか書籍の売上は落ちてるけど、1995年がピークだっただけで、
80年代に比べれば売上は今の方が大きい。
近視眼的な数値だけみてヤバイヤバイと騒ぐのは愚か。

155:デフォルトの名無しさん
09/06/11 23:15:19
>>154
80年代と比べたら、出版数自体が大きく違う
つまり、売れないから一杯出すのスパイラルになってるんだよ

156:デフォルトの名無しさん
09/06/11 23:16:07
ここへの質問にしても、その質問に答えをもらったとしても、
その後あんたどうすんの?と言いたくなるような質問が多い。

一冊本を通読した方がよっぽど近道だと思うんだが。


157:デフォルトの名無しさん
09/06/11 23:30:05
>>152
いや、danに限らず、新しい本が出た前後、あるいは出る前に
その本について触れているブログを見ると、「献本でもらった」
ばかりという現象さ。

158:デフォルトの名無しさん
09/06/12 00:26:04
基礎の本はネットで間に合うから買ったことない
Effective Perlは買った
あれはいい本だ

159:デフォルトの名無しさん
09/06/12 05:58:35
>>155
昔はいっぱい出版しても置くとこがなかった=売れなかった。
今はロングテールがそれを下支えしてる。
それはどうでもいいとして、現在一定の売上が上がってる以上、
「本が売れてない」って話は違うだろ。

>>158
青らくだくらいは通読しといた方がいいと思うけどな。
perldoc通読する気にはならんだろ。
このスレには青らくだにちゃんと書いてあるような単純なことで騒ぐやつが多すぎる。

160:デフォルトの名無しさん
09/06/12 08:07:45
>>159
お前さんは出版業界の人なのけ?

一般的にニュース等で言われてたり、実際に出版業倒産が相次いでたり
そういう事実を否定してまで、「売れてる」と主張する根拠は?

161:デフォルトの名無しさん
09/06/12 08:47:46
>>146
うん、全然売れなくなったな。
コンピュータ関係の本は、もう終わりだと思う。


162:デフォルトの名無しさん
09/06/12 11:52:28
.plはポーランドのドメインです

163:デフォルトの名無しさん
09/06/12 18:18:44
http:// にはマッチしなくて
http:// にマッチするってどんな風に書けばいい?

164:デフォルトの名無しさん
09/06/12 18:21:18
(?<!h)http://

165:デフォルトの名無しさん
09/06/12 18:47:06
ちなみに新聞も売上げヤバイよ

166:デフォルトの名無しさん
09/06/12 20:16:28
コンピュータ関係の書籍は、ずっと縮小を続けている分野だよ。

167:デフォルトの名無しさん
09/06/12 20:21:31
小説もね。
東野圭吾とか、今回の村上春樹とか、一部の売れっ子作家以外が殆ど売れない。
そこそこ売れる作家 というのが昔に比べてとても減った。

昔に比べ、どんどん娯楽というかエンターテイメントの多様化が進んでるから仕方ない。

168:デフォルトの名無しさん
09/06/12 22:59:13
なんのスレやねんここ

169:デフォルトの名無しさん
09/06/12 23:14:48
まあ、「本なんていらね。webに全部書いてある」とか言う人間は、
どんな入門書にも答えが書いてあるような質問を
こんなとこでするな、ということだ。

答える方も時間の無駄だし、質問してわかった気になっても全然身につかない。
無駄の相乗。

170:デフォルトの名無しさん
09/06/12 23:17:42
sub hoge{
 my $self = shift;
 my $func = shift;
 &{$func($self)}
}

こんな感じで変数に入ってるメソッド名を実行したいのですが、
継承ができる書き方を教えてください

171:デフォルトの名無しさん
09/06/12 23:39:19
>>170
$self->$func();
…って事ではなく?

172:デフォルトの名無しさん
09/06/12 23:56:30
>>171
いけました。ありがとうございます。

sub hoge{
 my $self = shift;
 my $Function = {};
 $Function->{'hoge'} = shift;
 no strict 'refs';
 #$self->{$Function->{'hoge'}};#ここがわからない
}

実際のコードだとこんな感じなんですが、
一時変数に代入したら{}とか気にせずにいけたんですね。

ちなみに、一時変数使わない場合の書き方とかあるんでしょうか?
後学のためにご存じでしたら教えて欲しいです。

173:デフォルトの名無しさん
09/06/13 00:27:49
>>172
URLリンク(perldoc.jp)
> 矢印の右側は典型的にはメソッド名ですが、メソッド名や
> サブルーチンリファレンスが入った単純スカラ変数も使えます。

あとperlrefとperlmodくらいは通読しとくといいよ
URLリンク(perldoc.jp)
URLリンク(perldoc.jp)

174:デフォルトの名無しさん
09/06/13 00:29:35
>>172
らくだ本を買おう!

175:デフォルトの名無しさん
09/06/13 00:33:34
>>173
素敵なマニュアルまで紹介して頂いて重ね重ね感謝します
隅々まで全部読んできます

176:デフォルトの名無しさん
09/06/13 01:19:50
はぁ・・・出版業界よろしくPerl界の凋落もここまできたか・・・

1にマニュアル
2にgoogle
3,4が無くて
5に2ch

だろーが!

177:デフォルトの名無しさん
09/06/13 01:55:53
らくだ高いっつの

178:デフォルトの名無しさん
09/06/13 02:07:30
勉強する代わりに本を集めまくる。
そういう強迫神経症的逃避法が存在する。



179:デフォルトの名無しさん
09/06/13 02:36:22
5.6ベースで二分冊な第3版を今から買うくらいなら、
5.00xベースの改訂版(第2版)の古本でも買って、
新しい情報はperldocで追いかけた方がいいかもな
URLリンク(www.amazon.co.jp)

実際押さえるべき基本的な部分は5.00xの頃から大差無いし、
細かいところは第3版だと古いしね

180:デフォルトの名無しさん
09/06/13 03:13:14
でも大半は既に知ってることのような
読んでないから実際にはウロコ落ちまくりかもしれないけど

181:デフォルトの名無しさん
09/06/13 05:17:02
Perlのテキスト処理で質問があります。
個人のデータ(苗字、名前、性別、住所、部署等)が載ったテキストを処理し、
特定の苗字で、性別が男の場合はその人のデータをすべて削除し、
それ以外はすべて出力するといったようなコードはどう組めばよいのでしょうか?
例えば、
鈴木 一郎 男 東京都大田区~、営業部
鈴木 花子 女 千葉県浦安市~、総務部
といったデータが存在した場合、鈴木花子はテキストに残るが、
鈴木一郎に関する全データは削除される、という処理です。
他の苗字の人のデータは性別関係なくすべて出力されますが、鈴木という苗字で男性のデータはすべて削除します。

どなたかご教示よろしくお願いします。使用環境はUNIXです。

182:デフォルトの名無しさん
09/06/13 05:58:14
>>181
Perlでリクに答えるスクリプトを作るスレ
スレリンク(tech板)

183:デフォルトの名無しさん
09/06/13 05:59:59
>>182
ありがとうございます。
こちらに書いてみます。

184:デフォルトの名無しさん
09/06/13 12:12:11
OpenOfficeのオートフィルタでいいんじゃね

185:デフォルトの名無しさん
09/06/13 14:28:58
>>181
grep -v ' 男 ' data.txt > result.txt

186:デフォルトの名無しさん
09/06/13 15:54:39
鈴木 花子 女 青森県男鹿市~、男性用出版物販売業


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