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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://pc11.2ch.net/php/ )

このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。

http://www.perl.org/get.html
● 2011/02/14 現在の最新版: 5.12.3

▼ 前スレ
Perlについての質問箱 45箱目
http://hibari.2ch.net/test/read.cgi/tech/1287755129/
リンク集は >>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは >>5-7 あたり
2デフォルトの名無しさん:2011/02/14(月) 19:00:12
[プログラミング自体の経験が無い奴はまずココを読め]
Perl プログラミング講座: ttp://www.site-cooler.com/kwl/perl/

[本]
リャマ: ttp://www.oreilly.co.jp/books/9784873114279/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://ascii.asciimw.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/
perldoc.jp: ttp://www.perldoc.jp/
perldoc.perl.org: ttp://perldoc.perl.org/
3デフォルトの名無しさん:2011/02/14(月) 19:00:53
4デフォルトの名無しさん:2011/02/14(月) 19:02:14
# [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デフォルトの名無しさん:2011/02/14(月) 19:02:59
6デフォルトの名無しさん:2011/02/14(月) 19:54:16
7デフォルトの名無しさん:2011/02/14(月) 19:56:01
8デフォルトの名無しさん:2011/02/14(月) 20:08:38
いちもつ。
9Perl忍者 ◆M5ZWRnXOj6 :2011/02/14(月) 23:59:17
しればしるほど
俺TUEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!!!!!!!
言語になっているPerlはすばらしい

わかるかきみたち?

俺にはわかる
10デフォルトの名無しさん:2011/02/15(火) 00:09:41
perlの開発環境ってみなさん何つかってるんですか
emacsでやろうとしたら、全然だめだった
11Perl忍者 ◆M5ZWRnXOj6 :2011/02/15(火) 00:13:41
ぼくはmiとviです
12デフォルトの名無しさん:2011/02/15(火) 03:07:38
>>10
Perl書くのにどんなエディタ使ってる?
http://hibari.2ch.net/test/read.cgi/php/1014357485/
perlとかで便利なツール
http://hibari.2ch.net/test/read.cgi/tech/1185008629/
13デフォルトの名無しさん:2011/02/15(火) 10:11:30
>>4
についてなんですが、

>use open IO => ":encoding(cp932)";

があるので、

>open my $fh, '<', encode("cp932", $file) or die $! ; # ※2

の行の「encode()」は無くてもいいんですよね?
それとも無いとダメなんですか?
14デフォルトの名無しさん:2011/02/15(火) 10:34:33
>>13
前者は読み書きするファイルの中身の文字コードについての記述で
後者はファイル名の文字コードについての記述だからそれぞれ必要。
15デフォルトの名無しさん:2011/02/15(火) 10:34:33
>>13
前者は読み書きするファイルの中身の文字コードについての記述で
後者はファイル名の文字コードについての記述だからそれぞれ必要。
1613:2011/02/15(火) 10:47:40
>>15
なるほど
encode()で$fileを内部文字コードにしてたんですね
勉強になりました
17デフォルトの名無しさん:2011/02/15(火) 10:49:42
大事なことですもんね。
強調したい気持ちもわかります。
18デフォルトの名無しさん:2011/02/15(火) 11:07:21
下記コードの(1)〜(3)はどれもきちんと動作するのですが、違いは何でしょうか?
困っているわけではなく、純粋に違いを知りたいだけです。

$fh = STDOUT; # (1)
$fh = *STDOUT; # (2)
$fh = \*STDOUT; # (3)

print {$fh} "foo";
19Perl忍者 ◆M5ZWRnXOj6 :2011/02/15(火) 11:10:12
binmode STDOUT => ":encoding(cp932)";
これ宣言すれば

わざわざencode()使わなくても変換してくれるから STDOUTだから

だから無くてもいい

ここよめカス
http://perldoc.jp/docs/modules/encoding-2.6/encoding.pod#ABSTRACT


#encodingはSTDIN と STDOUT の PerlIO 層を指定されたエンコーディングに変更します。
#内部的に指定された エンコーディングから utf8 に変換します

utf8にしてから希望の文字コード
euc-jpのテキストの場合
use open IN=>":encoding(euc-jp)"; ー> utf8 −> binmode STDOUT=>"encoding(cp932)";
20デフォルトの名無しさん:2011/02/15(火) 11:39:09
if ($content =~ /ほげ/) {
}

これを「ほげ1」「ほげ2」「ほげ3」の3つを
AND、ORで書く方法ってありますかね
21デフォルトの名無しさん:2011/02/15(火) 11:39:39
>>19
誰にレスしてるの?
独り言?
22デフォルトの名無しさん:2011/02/15(火) 11:50:10
$1の中身が'01'とか頭に0がついている文字列でも
if($1 > 2) {}
とか、2より大きい場合とか数値として演算しても問題ないのでしょうか?
もし問題があるならどうやるのがいいのでしょうか?
23Perl忍者 ◆M5ZWRnXOj6 :2011/02/15(火) 11:56:34
もんだいないよwwwwww
やってみればいいじゃん
24Perl忍者 ◆M5ZWRnXOj6 :2011/02/15(火) 12:00:11
$1ってつかえねえからwwwwwwwwwww

もうお前死ねよ
25デフォルトの名無しさん:2011/02/15(火) 12:05:47
>>23
頭に0ついていても問題なし?
ありがとう

>>24
そうなんだ
ありがとう
26デフォルトの名無しさん:2011/02/15(火) 13:22:45
入力された文字列の「ひらがな、カタカナ、英数字、記号」の「全角、半角、大文字、小文字」に
マッチするようにしたいです。
例えば正規表現で表現すると
"あさ/"と入力されたら/[あアアぁァァ][さササ][//]/でマッチを取るように。

#そのまま書くと下記のようなイメージ
use utf8;
use open IO => ":encoding(sjis)";

$input= shift; #入力は"あさ/","アサ/","アサ/","ァサ/"などの場合、出力は全て同じ結果になるように
#【A】単純に置換
$input =~ /[あアアぁァァ]/\[あアアぁァァ\]/g; #iオプションをつければ小文字はいらなくなる??
$input =~ /[AAaa]/\[AAaa\]/g;
$input =~ /[/\/]/\[/\/\]/g;
$input =~ /[.\./]/\[.\.\]/g;


open(IN,"a.txt");
while(<IN>){
print "$_" if(/$input/);
}
close(IN);

さすがにこれは置換の行が増えすぎてナンセンスだと思うので、
何かスマートな方法もしくはモジュールなどありますでしょうか?
27デフォルトの名無しさん:2011/02/15(火) 13:25:46
文字クラス
2826:2011/02/15(火) 13:31:31
改行多いので分けました。
>>26で、半角のカナが全角になっている箇所がありました。

#a.txt(文字コードsjis)
あさ/あさ
ぁさ/ぁさ
ァサ/ァサ
アサ/アサ
A.B
A.B
a.b
#---------------

上記のようなファイルがあった場合、
"あさ/"が入力されれば
#---------------
あさ/あさ
ぁさ/ぁさ
ァサ/ァサ
アサ/アサ
#---------------

"a.b"が入力されれば
#---------------
A.B
A.B
a.b
#---------------

を出力させたい。
29デフォルトの名無しさん:2011/02/15(火) 16:54:12
JavaVM上で動くPerlインタプリタって作ることが出来るものなんですか?
いいサイトとかあったら教えて欲しいです
30デフォルトの名無しさん:2011/02/15(火) 17:02:52
頑張れば作れると思うけど良いサイトがあったらとか言ってる程度の
根性じゃ難しいんじゃないかなぁ。あとCで書かれたモジュールとか
そのままじゃ使えなくなっちゃう(多分)ので微妙かも。挑戦するのは
面白いと思うよ。
31デフォルトの名無しさん:2011/02/15(火) 17:02:52
頑張れば作れると思うけど良いサイトがあったらとか言ってる程度の
根性じゃ難しいんじゃないかなぁ。あとCで書かれたモジュールとか
そのままじゃ使えなくなっちゃう(多分)ので微妙かも。挑戦するのは
面白いと思うよ。
32デフォルトの名無しさん:2011/02/15(火) 17:03:36
すまんどうもマウスの調子が悪いようだ
33Perl忍者 ◆M5ZWRnXOj6 :2011/02/15(火) 17:04:19
うぜええええええええええ
34デフォルトの名無しさん:2011/02/15(火) 21:04:20
ここさあ、ここいいねえ ここ

ここで質問回答すれば Perlの理解力アップするしいいねここ

もっと質問しろカスども
35デフォルトの名無しさん:2011/02/16(水) 06:05:41
無人島に1つだけ持って行くなら何?
36Perl忍者 ◆M5ZWRnXOj6 :2011/02/16(水) 12:12:06
Perl関係ないよwwwwwwwwwwwwwwwwwwwwwwwwwww
37デフォルトの名無しさん:2011/02/16(水) 14:15:44
perlにはphpみたいなmysqlの排他制御はないの?
sqliteでも排他制御できると一番うれしいのだけど
38デフォルトの名無しさん:2011/02/16(水) 15:30:51
perl初心者質問は、ここでok?

perlをエディタでやりたい。miなど。
どうやって設定する?

os mac osx
39Perl忍者 ◆M5ZWRnXOj6 :2011/02/16(水) 15:37:20
うぜえwwwwwwwwwwwwwwww
40デフォルトの名無しさん:2011/02/16(水) 17:09:06
ほんとうぜぇわ糞コテ
41デフォルトの名無しさん:2011/02/16(水) 18:13:44
     /ニYニヽ              /ニYニヽ
    /( ゚ )( ゚ )ヽ            /( ゚ )( ゚ )ヽ
   /::::⌒`´⌒::::\         /::::⌒`´⌒::::\
  | ,-)___(-、|        | ,-)___(-、|     でででででってででてってていうwwwwwww
  | l   |-┬-|  l |        | l   |-┬-|  l |
 /    `ー'´  、` ̄ ̄ヽ    / 、   `ー'´    |
/ __       Y ̄)  |   (  (/     ヽノ_  |       ででってででてでっていうwwwwwwww
(___)       Y_ノ    ヽ/     (___ノ
     \      |       |      /
      |  /\ \     / /\  |
      | /    )  )    (  (    ヽ |
      ∪    (  \   /  )    ∪
            \_)  (_/
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
WWWWWWWWWWWWWWwwwwwwwwwwwwwWWWWWWWWWWWWWww
wwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwww

でっていうwwwwwwwwwwwwwwwwwwwwwwwwwwwwででででっていうwwwwwwwwwwwww
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
42Perl評論家:2011/02/16(水) 19:35:20
MacOSXのクソガキどもはさあ
あれだよな ブログやホムペ所持率たかいよな

絵とか載せたり、アニメキャラの画像つかってさああ

miとかわめいてんだろ?なあ?
クソマカ 君はマカーなんだけどさあ?

数年まえの俺もマカーだったんだよ?

だけど俺のほうがすごかったんだよマカーとして

お前はmiとかいうまえにタイムスリップして俺と勝負してみ?

負けるから へなちょこはターミナルで『エイッ!」っていってれば
43Perl評論家:2011/02/16(水) 19:37:26
私信すみなせん
44デフォルトの名無しさん:2011/02/16(水) 20:09:28
Perlが含まれるコテをNGっと
45デフォルトの名無しさん:2011/02/16(水) 20:10:04
-----問題例-----
サッカーの試合結果の記録されたデータファイルを読み取り、
優勝したチーム名を出力するプログラムを作成せよ。
データファイルには、先頭の行にチーム数が出力されており、
2行目からチーム名(チーム数分)、
それ以降の行に試合結果が出力されている。
試合結果の行は以下のフォーマットとなっている。
<ホーム側のチーム名> <ホーム側チームの得点>
<アウェイ側チームの得点> <アウェイ側チーム名>
チーム名は30文字以内とする。
試合に勝ったチームには勝ち点3が与えられ、引き分けたチームには
勝ち点1が与えられる。勝ち点の合計が最も多いチームが優勝となるが、
勝ち点の合計が同じチームが複数ある場合には、それらのうち、
得失点差(得点と失点の差)の合計が大きいチームが優勝となる。
得失点差の合計が同じ場合にはどちらを優勝としてもよい。
-----------データファイルの例-------
4
MANCHESTER_UNITED
ARSENAL
CHELSEA
LIVERPOOL
MANCHESTER_UNITED 3 1 ARSENAL
CHELSEA 3 0 LIVERPOOL
ARSENAL 2 2 CHELSEA
LIVERPOOL 3 0 MANCHESTER_UNITED
------------------------------------

これってPerlでできますか?
46デフォルトの名無しさん:2011/02/16(水) 20:13:07
できない理由なくね
47デフォルトの名無しさん:2011/02/16(水) 20:14:59
できるかできないかならできるけど
48デフォルトの名無しさん:2011/02/16(水) 20:21:56
宿題なんで教えてください(´ρ`)
49デフォルトの名無しさん:2011/02/16(水) 20:23:31
なんで
50デフォルトの名無しさん:2011/02/16(水) 20:29:49
なんで宿題だと教えなければならないのか
51デフォルトの名無しさん:2011/02/16(水) 21:45:46
宿題ならクラスの友人に聞けよ。
52デフォルトの名無しさん:2011/02/16(水) 21:55:09
友人総動員でもわからなかったんだろ・・・
53Perl忍者 ◆M5ZWRnXOj6 :2011/02/16(水) 22:03:11
ひゅひゅだよ 
みんな喧嘩はよくないよ
54デフォルトの名無しさん:2011/02/17(木) 01:00:38
web見りゃ何でも答えはのっている(だから「つまらないこと」を学ぶ必要など無い)という
タワケな根性だとこの先一生後悔するぞ。

脳みそなんてのは使ってなんぼ、体を動かすのとまったく同じこと。
55デフォルトの名無しさん:2011/02/17(木) 08:16:37
大学生(専門学生? 高校生?)に説教しても手遅れだよ。
もっち小さいときにきちんと教育しないと。
大人になってからだと、自衛隊とかそういうところで根性を叩きなおさないと無理。
56デフォルトの名無しさん:2011/02/17(木) 17:35:57
perlはflockでファイルの書き込み排他制御できるのに
sqliteやmysqlの排他制御できないの?
誰か教えてよ
57デフォルトの名無しさん:2011/02/17(木) 17:43:49
mysqlは鯖側でやるからperlのflockは関係ない。
sqliteは使ったことないから知らん。
58デフォルトの名無しさん:2011/02/17(木) 20:12:06
毎回追記でオープンして、flock すりゃなんとかなるよね。
59デフォルトの名無しさん:2011/02/17(木) 21:29:39
>>56
MySQL(InnoDB)は、操作するときに行ロックがかかる。
SQLiteはトランザクション宣言すると、データベース丸ごとロックがかかる。

データベース板へどうぞ。
http://hibari.2ch.net/db/
60デフォルトの名無しさん:2011/02/17(木) 21:35:59
epsの簡単な図を作りたいのですが、適当なモジュール等はありますでしょうか?
PLplotを使おうと思ったのですがマニュアルが分かりにくくて困っています。
61Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 22:56:52
あるスクリプトを長い期間実行させておきたいのですが
かわりに実行してくれるサーバとかないんですか?

vpsつかうしかないんですか?おしえてください
62Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 22:58:50
そのスクリプトで僕が死んだあとも2chに書き込みさせたいです

そしてインターネットでくらしたいです
63Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 23:00:25
おわりです
64デフォルトの名無しさん:2011/02/17(木) 23:06:38
はい
65Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 23:17:59
っで?それだけ?w

っていうのやめろ おこるからな
66Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 23:22:02
あ〜もうだめだ
67デフォルトの名無しさん:2011/02/17(木) 23:53:22
日本はテレビ局が国に支払う電波利用料が不当に安く設定されているぞ。
政府は消費税を上げる前に、電波オークション制度を導入し、税金としてテレビ局にきちんと払わせるべき。

          フジテレビ    テレビ朝日  日本テレビ  TBS
平均年間給与 1534万円     1,213万円  1,263万円   1358万円
従業員数    1431人      1,153人    1,159人

※全テレビ局が支払う電波利用料はたったの7億円


■電波オークションとは
電波帯域の利用免許を各テレビ局や通信事業者に付与する際、一番高い買い取り額を提示した会社に割り振る方式
先進国の約2/3が導入し、問題なく運用されており、大きな税収となっている。

■反対している者たち
 ・各テレビ局(国民の公共の財産である電波を格安で利用し、従業員の給料等にあてているため)
 ・総務省(現状、電波利用料は総務省の管轄であり利権となっている。財務省の管轄として税金化してほしくないため)
68デフォルトの名無しさん:2011/02/18(金) 16:31:39
ラクダ本ってみんな手元に置いてるの?
69デフォルトの名無しさん:2011/02/18(金) 16:41:00
図書館で借りる
70デフォルトの名無しさん:2011/02/18(金) 19:42:39
while(<>) { print if /BEGIN/ .. /END/ }

とやると、BEGINが含まれる行からENDが含まれる行がprintされるけど、
BEGINとENDが含まれる行はprintしないようにするエレガントな方法ってある?

何も考えずに書くと、

while (<>) {
  if (/BEGIN/../END/) {
    next if /BEGIN/;
    next if /END/;

    print;
  }
}

という、だっさいコードになるんだけど。
71デフォルトの名無しさん:2011/02/18(金) 19:44:56
>>70
コードがダサいんじゃない、
おまえがダサいんだ
72Perl忍者 ◆M5ZWRnXOj6 :2011/02/18(金) 19:53:18
エレガントwwwwwwwwwwwwwww
Rubyでもやってろよかす
73デフォルトの名無しさん:2011/02/18(金) 20:06:28
>>70
print if ((/BEGIN/ .. /END/) and not (/BEGIN/ or /END/));
74デフォルトの名無しさん:2011/02/19(土) 02:58:55
今まで独学で配布してるスクリプトなんかを見たりして学んできたんですが、ちゃんと基礎からしっかり覚えたいと思います。
お奨めの入門書や手元に置いておくべき本とかありますか?
75デフォルトの名無しさん:2011/02/19(土) 03:26:27
ラクダ、アルパカ、リャマは?
76デフォルトの名無しさん:2011/02/19(土) 08:15:52
>>74
自分はPerlクックブックだけでかなり上達した。
各章の冒頭に概要が書いてあり、そこを読むだけでもPerlのエッセンスがかなり分かると思う。

入門書は、>>75さん指摘のオライリー本を立ち読みなりして、今の自分にあったものを購入すればいいと思う。
あと、perldoc.jpで各種チュートリアルを読むのもいいかも。
77デフォルトの名無しさん:2011/02/19(土) 08:34:57
えっせんすwwwwwwwwwwwwwwwwwwwwwwww
78みなみな ◆MINA.uoEHM :2011/02/19(土) 10:06:22
ひゅひゅだよ

アルパか本あるよ しおれてるよ
79デフォルトの名無しさん:2011/02/19(土) 11:12:08
>>45
ニートで暇だから作ってみた。

use List::Util qw(maxstr);

my $file = "soccer_result.txt";
my $fh;
open $fh, $file or fileno($fh = \*DATA) or die $!;

my %result = map { chomp(my $team = <$fh>); $team => {} } 1..<$fh>;

while ( <$fh> ) {
my ($home_team, $home_goals, $away_goals, $away_team) = split;
my $points = ([0, 3], [1, 1], [3, 0])[ ($home_goals <=> $away_goals) + 1 ];

$result{$home_team}{point} += $points->[0];
$result{$away_team}{point} += $points->[1];
$result{$home_team}{goal_diff} += $home_goals - $away_goals;
$result{$away_team}{goal_diff} += $away_goals - $home_goals;
}

sub which_is_winner {
my ($a, $b) = @_;

$result{$b}{point} <=> $result{$a}{point}
or $result{$b}{goal_diff} <=> $result{$a}{goal_diff}
}
80デフォルトの名無しさん:2011/02/19(土) 11:14:22
my @ranked_teams = sort { which_is_winner($a, $b) } keys %result;

$result{$ranked_teams[0]}{rank} = my $rank = 1;

for my $i ( 1 .. $#ranked_teams ) {
$rank = $i + 1 if which_is_winner($ranked_teams[$i], $ranked_teams[$i-1]);
$result{$ranked_teams[$i]}{rank} = $rank;
}

my $max_len = length maxstr(keys %result);
print "順位 チーム名", q{ } x ($max_len - 8), "勝点 得失点差\n";

for my $team (@ranked_teams) {
printf "%2d位 %-${max_len}s %3d %4d\n",
$result{$team}{rank}, $team, $result{$team}{point}, $result{$team}{goal_diff};
}

__DATA__
4
MANCHESTER_UNITED
ARSENAL
CHELSEA
LIVERPOOL
MANCHESTER_UNITED 3 1 ARSENAL
CHELSEA 3 0 LIVERPOOL
ARSENAL 2 2 CHELSEA
LIVERPOOL 3 0 MANCHESTER_UNITED
81Perl忍者 ◆M5ZWRnXOj6 :2011/02/19(土) 14:30:39
>>80
my $points = ([0, 3], [1, 1], [3, 0])[ ($home_goals <=> $away_goals) + 1 ];

0点
82Perl忍者 ◆M5ZWRnXOj6 :2011/02/19(土) 17:00:11
おまえらしってる?
my $p=([1,2],[3,4],[5,6]);

この場合右のリストはスカラーコンテキストで評価されて
$p=[1,2];
$p=[3,4];
$p=[5,6];ってなって最終的に最後の[5,6]になるんだぜ
しらなかった?
83デフォルトの名無しさん:2011/02/19(土) 17:29:35
結果はそうなるけど、
スカラーコンテキストだったら要素数じゃないの?
84デフォルトの名無しさん:2011/02/19(土) 17:38:43
スカラーコンテキストで要素数になるのは配列。リストと配列は
別物なんだよね。

85Perl忍者 ◆M5ZWRnXOj6 :2011/02/19(土) 17:43:48
あれあれれれ?wwwwww
86Perl忍者 ◆M5ZWRnXOj6 :2011/02/19(土) 17:48:46
my @a=(1,2,3,4,9);
my $b=@a;
print $b;

@aが配列 (1,2,3,4,9)がリストだろw
87Perl忍者 ◆M5ZWRnXOj6 :2011/02/19(土) 17:50:05
リストと配列の違いもわからねえばかおつwwwwwwwwwwwwww
wwwwwwWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWwwwwwwwwwwwwwwwwww
88デフォルトの名無しさん:2011/02/19(土) 17:50:49
なんかだまされてる
$p = 0;
$p += (1, 2, 3);
print $p; # 3
89デフォルトの名無しさん:2011/02/19(土) 18:00:07
(1,2,3)をリストと呼んでるけど実はコンマ演算子で結合された
式なんだよな。で、コンマ演算子はコンテキストによって働きが違う。

ttp://perldoc.jp/docs/perl/5.6.1/perlop.pod#Comma32Operator

コンマ演算子⚓

二項演算子の "," はコンマ演算子です。 スカラコンテキストではその左引数を評価し、その値を捨てて、 それから右引数を評価し、その値を返します。 これはちょうど、C のコンマ演算子と同じです。

リストコンテキストでは、これは単にリスト引数の区切り文字で、 双方の引数をそのリストに挿入する働きがあります。
9088:2011/02/19(土) 18:08:46
>>84 >>89
ありがとう。評価はして左に渡されるのは最後の結果ということか。
普段やらないことは予想も付かないところがPerlらしい...?
91Perl忍者 ◆M5ZWRnXOj6 :2011/02/19(土) 18:10:28
お礼いえこら
92デフォルトの名無しさん:2011/02/19(土) 20:35:56.56
リストじゃないんだって。勉強になったな。>>91
93Perl忍者 ◆M5ZWRnXOj6 :2011/02/19(土) 21:25:25.92
よしPerldocでもみるか
94Perl忍者lvl1 ◆M5ZWRnXOj6 :2011/02/19(土) 23:57:48.07
マジカルインクリメントっていうのしってるかい?w
名前かっこいいねw
95デフォルトの名無しさん:2011/02/20(日) 08:22:43.98
普段やらないことって
リストなんてlispそのまんまじゃん
普段やらないんじゃなくてお前の知識が無いだけだ
lispのリストすら知らないんだったらプログラマやるのは厳しい
デスマの元だ
96デフォルトの名無しさん:2011/02/20(日) 10:27:13.06
>>92
難しく書いてるけど、cの変数宣言
int a, b;
もコンマ演算子な。
97デフォルトの名無しさん:2011/02/20(日) 11:26:03.76
if (1 .. /^$/);


行数が/^$/までってどういういみ
行頭と行末?なにがしたいのこれ

教えてください
98デフォルトの名無しさん:2011/02/20(日) 11:36:02.58
行がある間だけ真ってことだろwwwwwww
$.==1 .. /^$/
99デフォルトの名無しさん:2011/02/20(日) 14:45:15.68
>>98
/^$/は空行までってことだろう。

>>70
実は..演算子の値はただの真偽値じゃなくて

偽としては空文字列が返され、 真としては (1 から始まる) 順に並んだ数値が返されます。 この通し番号は、新たに範囲が始まるごとにリセットされます。 範囲の最後の数字には、文字列 "E0" が末尾につけられます。

ってことなので、

while (<>) {
if ($r = (/BEGIN/..($g=/END/))) {
print if $r > 1 && $r !~ /E0$/;
}
}

てな書き方もできる。

100デフォルトの名無しさん:2011/02/20(日) 14:46:30.14
すまんゴミが残ってた。

while (<>) {
if ($r = (/BEGIN/../END/)) {
print if $r > 1 && $r !~ /E0$/;
}
}
10197:2011/02/20(日) 15:03:14.17
if (1 .. /^$/);

/^$/は$_とマッチさせているということでよろしいでしょうか?

$_=~/^$/ マッチするまで続けるのでしょうか?
10297:2011/02/20(日) 17:01:36.72
..ってリストを作るらしいのですが

@a=(1..100);
だと1,2,3,4,5,6,7,8,9,10 から98,99,100までですよね

if (1 .. /^$/); この場合はどういう意味でしょうか
$.==1 .. $_=~/^$/って言う意味ですか?
ファイルが5行だとしたら
1..5みたいなかんじで 最後の/^$/は空白行があったら1をかえすんですか?
ってことは

1,2,3,4,5,1になるんですか?
103デフォルトの名無しさん:2011/02/20(日) 17:05:39.62
>>102
コンテキストによって動作が違うんだよ。説明長いのでマニュアル嫁。

ttp://perldoc.jp/docs/perl/5.12.1/perlop.pod#Range32Operators
10497:2011/02/20(日) 17:39:16.00
>>リストコンテキストでは、左の値から右の値まで (1 づつ昇順で) 数えあげた値から なるリストを返します。
左側の値が右側の値より大きい場合は、空リストを返します。

foreachで例えると
foreach(1..5) = @a=(1,2,3,4,5) foreach(@a)
左の値が右の値より大きくなると空だから終了されるのはわかんだけどさ
マニュアルのどこに書いてあんの
ねえ?こたえてよほら?ねえ?w
10597:2011/02/20(日) 17:42:38.79
if (1 .. /^$/)
これが知りたいですww教えてくださいw

マニュアルなんて読みましたw
1から/^$/って意味がわかりませんw
空白行を見つけるまでっていう意味ならなんとなくわかりますw
106Perl忍者lvl1 ◆M5ZWRnXOj6 :2011/02/20(日) 17:45:18.68
こんなのもわからないの?
かわいそう・・・
107Perl忍者lvl1 ◆M5ZWRnXOj6 :2011/02/20(日) 17:46:08.36
ここに書き込むのやめてください
ゲロクズゴミ○ゆ君
108Perl忍者lvl1 ◆M5ZWRnXOj6 :2011/02/20(日) 17:59:04.86
>>105
open my $fh,"<","file";
my @a;
while(<$fh>){
if(1../^$/)
{
print "$. $_\n";
}
}
close $fh;


######## File ########
aho
tako
hage

kasu
hage
#########
これでわからなかったらカスすぎるよ君は
109デフォルトの名無しさん:2011/02/20(日) 18:14:58.52
通称、flipflop演算子だそうな。
下のサイトが分かりやすい。
ttp://d.hatena.ne.jp/hyuki/20061222#flip

にしてもここのスレはとっても優しい人がとってもたくさんいてとっても嬉しいよ
110デフォルトの名無しさん:2011/02/20(日) 19:22:46.71
1..いらねんじゃね?^$だけでいいんじゃねぇの?
111デフォルトの名無しさん:2011/02/20(日) 19:33:10.77
1で常に真って意味だ
112デフォルトの名無しさん:2011/02/20(日) 19:46:21.42
いや、空行検知して処理止めるだけなら^$だけでいい
とかだろ
113デフォルトの名無しさん:2011/02/20(日) 19:55:51.12
>>111
範囲演算子の場合は違うんだなこれが。

スカラの ".." の被演算子が定数表現であるときは、その被演算子は暗黙に、 現在の入力行番号(変数 $.) と等しい(==) 場合に真となります。
114デフォルトの名無しさん:2011/02/20(日) 20:35:12.43
110みたいなカスがいないと 俺より”ちょっとレベル高いやつが”質問指摘できなくて
おいしくないからさ^^;


クソみたいな質問答えてる113はご満悦だろうね^^;

クソがいないと俺TUEEEEEEEできないからね^^;
115デフォルトの名無しさん:2011/02/20(日) 20:35:52.83
クソのおかげで、今日もお鼻が高いですよ
116デフォルトの名無しさん:2011/02/20(日) 20:38:27.36
忍者コテ外すな
117デフォルトの名無しさん:2011/02/20(日) 20:38:32.73
>>113
ってことは、関数を使って表現すると
while((!eof(FH) && (length($line) > 0)){ 〜 }

ってこと?
118デフォルトの名無しさん:2011/02/20(日) 20:41:59.50
>>117
do while使えばラクじゃん
119デフォルトの名無しさん:2011/02/20(日) 21:55:55.56
do while って使ったこと無い
120デフォルトの名無しさん:2011/02/20(日) 22:13:23.72
関数作ったんだけど、自分自身がリストとして評価されてるのかスカラで評価されてるのか知る方法って?
121Perl忍者 ◆M5ZWRnXOj6 :2011/02/20(日) 22:16:01.30
>>120
wantarray
122デフォルトの名無しさん:2011/02/20(日) 22:33:37.43
thx
123デフォルトの名無しさん:2011/02/20(日) 23:01:59.92
>>110 の言いたいことは
while(<>){
last if /^$/;
print;
}
でいいんじゃないかってことじゃないか?
124デフォルトの名無しさん:2011/02/20(日) 23:09:01.02
>>123
四時間かけてそのことを理解したのかよ
125デフォルトの名無しさん:2011/02/20(日) 23:58:44.33
>>75,76
ありがとうございます。
126Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 01:04:45.07

...は被左演算子が真だったら被右演算子をテストしないって書いてあるね^^;

1行ずつ行を読み込んでるけど次のも読み込んでるのかな

if(/<pre>/.../<\/pre>/)

<pre>
aaaa
eeee
</pre>

<pre>にマッチしたら真になり ...は、被右演算子が再度でるまで評価しないってあるからさ
aaaa
eeee
</pre>この3行読み込んでるですよ^^;

みなさんわかりますか? 脳みそ足りてないからわからなさそうだけど
127Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 01:06:31.40
..2個だけだと評価しちゃうからダメですよ^^;
if(/<pre>/../<\/pre>/)

<pre>
aaaa
eeee
</pre>
まず<pre>で最初にマッチして 次読み込んだときに被右演算子が真の間ってあるので
aaaaとマッチせず終了です^^;
意味わかりましたか?かすども..と...の違いが
128Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 01:08:12.76
まとめますと

.. は 欲張りじゃない

... は 欲張り

って覚えてください^^;
129デフォルトの名無しさん:2011/02/21(月) 09:23:42.13
まちがってるしwww
130Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 09:49:22.35
あってるけど?^^;
131デフォルトの名無しさん:2011/02/21(月) 13:55:26.63
猫オペレーターが使えると柔軟性が出て便利になるよね。

print if /START/ .. /END/; # => START 1 2 END
print if /START/ ..^ /END/; # => START 1 2
print if /START/ ^..^ /END/; # => 1 2

START
1
2
END
132デフォルトの名無しさん:2011/02/21(月) 14:06:31.33
>>131
ある区切りの間だけ欲しくて区切りそのものはいらないって
よくあるからな。いつから入るんだっけ?
133佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 15:47:06.34
いろんな演算子があんだね^^;
134デフォルトの名無しさん:2011/02/21(月) 16:35:22.03
>>132
Perl 5.13.x(0〜10)のPerl deltaを見たけど、なかった。
だから今年の4月リリース予定のPerl 5.14には多分、入らないと思う。

というか、perl 5にneko operator入るのかな?
135デフォルトの名無しさん:2011/02/21(月) 17:50:07.08
Perl忍者って何でわざわざC言語のスレにきてあらしてんの?
136佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 18:03:41.09
if(/START/../END/)
これってさあ
>>範囲演算子は、いったん左被演算子が真になると、右被演算子が真である間、 真を返すようになります。
右被演算子が偽になると、演算子も偽を返すようになります。

ってあるよね?
START
123
45
ffaa
ffem
END
ってあったらさあ 最初STARTが左被演算子とマッチして真になるよね?
>>いったん左被演算子が真になると、右被演算子が真である間、 真を返すようになります
ってあるけど 右被演算子は/END/で真になってないよね?wwww
STARTの場所読み込んでるわけだしwww もし次読み込んでも
123の行だし どういうことかな???

挙動教えてくれない? どう評価されているか教えてくださいwww
137佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 18:05:57.73
この結果はわかるんだけどね^^;
/START/../END/は ENDまでの行を出力するって それくらいわかるんだけどさ^^;

挙動教えてください^^;
138デフォルトの名無しさん:2011/02/21(月) 18:10:56.58
perlopを嫁
> Once the left operand is true, the range operator stays true until the right operand is true,
> AFTER which the range operator becomes false again.
139佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 18:22:05.78
ほら、2件くらいperlopよめとかさ 読んでるんだけど

もっと簡単に説明してくださいよ

ね?^ー^;
140デフォルトの名無しさん:2011/02/21(月) 18:34:09.30
Perl忍者ってうぜぇな
取りあえず、今日始めてperl6をななめ読みした俺が答えてやるよ
1../^$/
は、取りあえず1(true)から始めて、/^$/が真になるまで続けるってことだ
OK?
141佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 18:40:36.47
そんなのわかってるからいいよwwwwwwwwww
1000スレ目指すためにやってんだからさwwwww
142佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 18:42:17.97
まあ右の終了条件になったら偽を返して終了みたいなかんじだろw
143デフォルトの名無しさん:2011/02/21(月) 18:51:31.67
「右被演算子が真である間」⇒「右被演算子が真になるまで」
144デフォルトの名無しさん:2011/02/21(月) 19:04:04.74
初めてのperl の13章の 問題で、答えみてやったんだが、動かない

おかしいところをわからない


#!/usr/bin/perl
print "Which directory? (Default is your home directory) ";
chomp (my $dir = );
if ($dir =~ /^\s*$/) {
chdir or die "Can't chdir to your home directory: $!";
}else {
chdir $dir or die "Can't chdir chdir to '$dir': $!";
}

my @files = <*>;
foreach (@files) {
print "$_\n";
}

誰かなおして
直してくれた人のことを、感謝する
145デフォルトの名無しさん:2011/02/21(月) 19:08:28.00
>>144
$dirの中身はどこから沸いて出てくるの?
146デフォルトの名無しさん:2011/02/21(月) 19:11:41.89
>>144
<*>は何が入るつもり?
147デフォルトの名無しさん:2011/02/21(月) 19:23:28.24
訂正しました

#!/usr/bin/perl
print "Which directory? (Default is your home directory) ";
chomp (my $dir = <STDIN>);
if ($dir =~ /^\s*$/) {
chdir or die "Can't chdir to your home directory: $!";
}else {
chdir $dir or die "Can't chdir to '$dir': $!";
}

my @files = <*>;
foreach (@files) {
print "$_\n";
}

148デフォルトの名無しさん:2011/02/21(月) 19:24:46.30
>146
*は グロブする とかいてある
149佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 19:38:52.07
早くなおすようにいえよカス

だから原文だしたのね^^;

○ ↓
範囲演算子は、いったん左被演算子が真になると、右被演算子が真になるまで、真を返すようになります。
右被演算子が偽になると、演算子も偽を返すようになります。
150佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 19:40:21.35
これでもやっとが解消されたよ^^;

○ ↓
範囲演算子は、いったん左被演算子が真になると、右被演算子が真になるまで、真を返します
右被演算子が偽になると、演算子は偽を返します

ほうほうがわかりやすいね
151佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 20:32:59.15
正規表現としてみてたからさ マッチしなかったら偽を返すかとおもってて

右がマッチしてないのに、なんで /xxx/の後の行が出力されてるって思ったら

真を返してたんだね^^;
152デフォルトの名無しさん:2011/02/21(月) 20:58:46.49
>>151
こんなのもわからないの?
かわいそう・・・
153佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 23:00:25.48
ミスってるマニュアルが悪いんだよ
154デフォルトの名無しさん:2011/02/21(月) 23:08:21.52
どれどれ
> Once the left operand is true, the range operator stays true until the right operand is true,
左側のオペランドがtrueなら、右側のオペランドがtrueになるまで、オペランドはtrueを保持する。
> AFTER which the range operator becomes false again.
その後、オペランドは再びfalseに戻る

…ちゃんと正しく分かりやすく書いてあるじゃん?
まぁ、英語読めないバカが悪いってことで
155佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 23:57:18.86
おまえがバカだよ

英語のレスみてなかったから
156佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/22(火) 00:07:23.77
 原文だされても なにこいつ原文だしてるの
すでに日本語のURL出してるのにバカじゃねえの?しか思ってなかったからさ

原文だすとき、日本語のやつは間違えてるから
原文読めっていえばよんでたけどね
157佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/22(火) 00:14:00.34
バカっていったこと撤退しろ
158佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/22(火) 00:15:34.51
バカっていったこと撤回しろ
159デフォルトの名無しさん:2011/02/22(火) 00:16:10.29
baka
160デフォルトの名無しさん:2011/02/22(火) 00:26:34.86
救いようのないアホだな。
英語読めないバカが悪いって書いてるだろ?
自己申告で読めるって言ってるなら同意しとけば良いじゃん。
161デフォルトの名無しさん:2011/02/22(火) 00:51:14.79
>>160
>>自己申告で読めるって言ってるなら同意しとけば良いじゃん。

日本語不自由なんですね、わかります。
あとsageてね白雉
162デフォルトの名無しさん:2011/02/22(火) 01:48:51.12
都合の悪い時だけ鳥は付けないんですね。
わかります。
163デフォルトの名無しさん:2011/02/22(火) 08:51:38.60
sage
164デフォルトの名無しさん:2011/02/22(火) 08:58:47.92
sage
165sage:2011/02/23(水) 18:50:51.26
現在、ディスプレイの画像をキャプチャして 比較するbmpと似ていたら1を返すperlを書いています

比較する為の画像xxxx.bmpがあって
1)capture.exeでディスプレイの画面をキャプチャーしてtmp.bmpに保存
2)imagemagickでtmp.bmp読み込んで切り抜き保存
3)cmpbmp.exeで切り抜いた場所(tmp.bmp)と画像(xxx.bmp)が同じかどうかを比較しています
1),2)でHDDに保存するという事をしていますのでHDDが常にガリガリいってしまっている状態になってしまっております

これをすべてPerlのモジュールでする事は可能でしょうか?
なるべくHDDから読み込みだけをしたいと思っています
1)xxxx.bmpを読み込んで$Abmp
2)ディスプレイの画面をキャプチャーして切り抜き $Bbmp
3)$Abmpと$Bbmpを比較して近ければ特定の返り値をかえす
という感じに出来たら良いなと思っております
166デフォルトの名無しさん:2011/02/23(水) 19:00:42.67
RAMディスクは却下なん?
167デフォルトの名無しさん:2011/02/23(水) 19:45:59.49
てsと
168デフォルトの名無しさん:2011/02/23(水) 20:48:18.50
>>165
CPAN で検索しないのは宗教的理由とかですかそうですか。
Win32::Screenshot とか使えそうなんじゃない?
ちょうど Image::Magic 使ってるみたいだし。
169デフォルトの名無しさん:2011/02/25(金) 18:57:01.44
perlソースを短縮化するツールとかってないでしょうか?

コメントだけとか空行だけ消すといっただけでもいいんですが、自分でやるとヒアドキュメントや
正規表現の途中だったり文字列途中だったり等々、ちゃんとしようとするとかなり難しくて・・・。
170デフォルトの名無しさん:2011/02/25(金) 19:04:47.38
手作業でもすればいいんじゃないかな
171デフォルトの名無しさん:2011/02/25(金) 19:30:21.21
>>169
自力で再発明することを勧める
そうすればperlerとしての次のステップが開けるはず
それかCPANで探す 探さないのは宗教的理由とかですか?
172nobodyさん:2011/02/25(金) 19:53:09.35
みんな、どんなHTMLパーサーつかってる?

私は、HTML::TagParserだよ

HTML::Parserむずかしそうだったから使ってないよ

HTML::ParserのほかにTreeBuilderとかあるけど

みんな何使ってるの?教えて
173デフォルトの名無しさん:2011/02/25(金) 21:09:10.83
正規表現でごりごり書いてる
174nobodyさん:2011/02/25(金) 21:15:24.31
<td>とかたくさん連続してきたら

正規表現でやるのめんどくさいとおもったの
175デフォルトの名無しさん:2011/02/25(金) 21:29:07.43
えっ
176デフォルトの名無しさん:2011/02/25(金) 21:51:17.88
ものすごくてきとーに書くけどニュアンスで受け取ってw

<tr>(<td>(.*?)</td>)+</tr>

でしょ?
とくにめんどくさいってほどでも。。。
177nobodyさん:2011/02/25(金) 21:58:36.18
うんありがとう
178デフォルトの名無しさん:2011/02/26(土) 06:15:00.62
既存のPerserってタグの対応が不整合なHTMLとかでもコケたりせずに解析したりエラーや警告出したりできるの?
現在WebにあるHTMLってかなりの割合でその手の壊れた代物が残っている感触なんだけど
179デフォルトの名無しさん:2011/02/26(土) 09:22:38.99
>>178
XML::LibXMLで、recoverオプション付けるとか。
180デフォルトの名無しさん:2011/02/26(土) 11:04:56.46
Linux機で、現在のIPアドレス、ネットマスク、デフォルトゲートウエイのデータを
得るにはどうしたらいいですか?
181デフォルトの名無しさん:2011/02/26(土) 13:18:30.72
ifconfig
182デフォルトの名無しさん:2011/02/27(日) 22:51:24.41
>>169 ですが、
perlソースを短縮化するツールとかってないでしょうか?
183デフォルトの名無しさん:2011/02/27(日) 22:53:37.19
短縮しなければいけないんですか。空白があってはダメなんですか
184デフォルトの名無しさん:2011/02/28(月) 10:46:54.25
182みたいなやつさあ

すぐ人の真似する、なんか誰かが短縮してたりjavascript短縮してたりしてたからさ

真似して、僕もしたいみたいなやつなんだよ

だからこういうやつすぐ人の真似してEmacsつかうやつだよ かわいそう
185デフォルトの名無しさん:2011/02/28(月) 11:17:28.33
>>182
perl -MO=Deparse,-si0 hoge.pl
186デフォルトの名無しさん:2011/02/28(月) 15:02:37.37
>>185
ありがとうございます。出来ました!
日本語が文字コードになって出てきますが、自分であとは調べてみます。
187デフォルトの名無しさん:2011/02/28(月) 23:56:18.73
jsonをhtmlに変換するモジュールってある?
188デフォルトの名無しさん:2011/03/01(火) 00:12:39.02
意味がわからん
データ構造の表現にすぎないJSONをどういうHTMLに変換したいというのか
189デフォルトの名無しさん:2011/03/01(火) 09:13:57.18
>>187-188
xmlとエスパーしてみたがどうだろうか?
190デフォルトの名無しさん:2011/03/01(火) 10:30:09.19
<span class="img">
<img src="http://yahoo.co.jp" alt="ばか講座" />

</span>


っていうのがあってHTML::TagParserで取得したいのですが
#!/usr/bin/perl
use strict;
use HTML::TagParser;
my $html=HTML::TagParser->new("http://www.ustream.tv/user/garden5/videos");
my @list=$html->getElementsByClassName("img");
print $list[0]->innerText;

srcのURLの値が取得できません
innerTextだとタグは無視されるのわかってます
どうやればいいんですか?教えてください
print $list[0]->getElementsByTagName("img");
ってやってもimgタグ取得できません教えてください
191デフォルトの名無しさん:2011/03/01(火) 10:33:03.81
URL取得したいんです 教えてください
正規表現でやりますね
192デフォルトの名無しさん:2011/03/01(火) 10:44:24.01
ヒント:LWP
193デフォルトの名無しさん:2011/03/01(火) 11:15:36.12
WEB::Scraperのコマンドライン画面で コマンド履歴ってどうやって取得するの?おしえてください
194デフォルトの名無しさん:2011/03/01(火) 11:18:11.71
できました
195デフォルトの名無しさん:2011/03/01(火) 11:42:31.73
できました
196デフォルトの名無しさん:2011/03/01(火) 11:44:41.68
できました
197デフォルトの名無しさん:2011/03/01(火) 12:39:53.90
かみまみた
198デフォルトの名無しさん:2011/03/02(水) 08:03:39.29
何個できました?

「優れたPerlプログラマを見分ける27の質問」の日本語訳
http://d.hatena.ne.jp/gfx/20110301/1298944990

「優れたPerlプログラマを見分ける27の質問」回答例
http://blog.livedoor.jp/dankogai/archives/51645218.html
199デフォルトの名無しさん:2011/03/02(水) 09:07:58.87
Haskellやってたんですけど
最近Perlはじめたんですけど
26個できました
ちょっと苦戦しました
200デフォルトの名無しさん:2011/03/02(水) 09:22:01.76
1. シジルなんて言葉は初めて聞いたw
8. デフォルトでレキシカルってわからん。回答にはmyって書いてあるけど、明示したらデフォルトちゃうやろ?
20. 例外なんてないだろw
22. たぶんfor(<FH>)とwhile(<FH>)の違いを言ってるんだろうけどfor(;$_=<FH>;)ならいっしょだよな
201デフォルトの名無しさん:2011/03/02(水) 10:49:07.07
シジルは確か「初めてのPerl」に出てたぞ。
8.の「default」は、既定値にする、そのように初期設定する、的な意味合いだろうからmyでいいんじゃね?
俺はmyの使用を強制するuse strict(またはuse strict "vars")が答かなと思たんだが。
「How do you ensure that the default scope of a variable is lexical?」だし。
202デフォルトの名無しさん:2011/03/02(水) 11:07:11.74
>>201
ラクダしかない時代から使ってるんで「初めてのPerl」は読んだことないやw

デフォルトでレキシカルっていうとなんかuse lexicalみたいなプラグマで
宣言するとあとはいきなり出てきた変数が全部レキシカルになるようなもの
をイメージしちゃったよ。原文読むとそうかなと思わなくもないけど
だったらいちいちデフォルトとか書かんといて欲しいわ。紛らわしい。
203デフォルトの名無しさん:2011/03/02(水) 11:48:40.18
4.ハッシュをリストコンテキストで評価すると得られるものは何か

これ↑を、この↓質問にしたら、ちょっと難しい?

ハッシュをスカラーコンテキストで評価すると得られるものは何か
204デフォルトの名無しさん:2011/03/02(水) 14:36:03.45
nipotan:おれ、一度たりとも mala の苗字が岸本だなんて公言したことないぞ http://bit.ly/bC7YG7 12:06 AM Aug 28th, 2010 nipotterから

mala:むかし酒の席で酔ったnipotanが「えー別にもう本名で活動しちゃえばいいじゃん」と俺の本名を発言したところ、
その場で例の契約が発動、nipotanをミンチにしてしまい、慌てて黒魔術で復活させた、という経緯があって呪力を抑えるために髪を伸ばしてる。
約2時間前 TweetIrcGatewayから

うそついてんじゃねえぞnipotan
205デフォルトの名無しさん:2011/03/02(水) 14:37:52.53
嘘つきは泥棒の始まり
206デフォルトの名無しさん:2011/03/02(水) 14:39:16.19
読み(ひらがな)
うそつきは どろぼうの はじまり。

意味
うそを、平気でつくようになると、やがて、盗みも、平気でやってしまう、ということ。

解説
うそをつくことに、恥ずかしさや、悪いことをしているという意識がなくなり、平気で、うそをつくようになると、悪いことへの恥ずかしさや、罪悪感が、なくなり、
やがて、盗みも、平気でしてしまう、ということです。うそをつくことを、習慣にしては、いけないという、いましめのようです。うそをつくということは、
他人をだますことで、それは、人と人とのコミュニケーションを、妨(さまた)げる原因であり、基本的に、
うそをつくことは、いけないこと、であると知るべきと思います。

重要語の意味
嘘=「うそ」と読み、人をだましたり、ごまかす為に使う、本当でないことや、まちがったこと。
つく=うそや、悪口などを言う。
泥棒=「どろぼう」と読み、他人の物を許可なく、又は、だまして、盗み取る人。
罪悪感=「ざいあくかん」と読み、罪の意識を持ち、
悪いことをしているという気持ち。
罪=「つみ」と読み、@社会の決まりや、法律などをやぶること。 A宗教や、道徳などの決まりに、反する行為。
207デフォルトの名無しさん:2011/03/03(木) 11:45:50.44
問題の意図がわからなくても、答えを見たら普通にソレをやってるって事や、意味は分かるって事が多かった。

名称なんて考えずに組んでるからなぁw
208デフォルトの名無しさん:2011/03/03(木) 23:18:30.03
関数の、関数名だけが違うものを作りたい場合どのようにしたらよいのでしょうか?
イメージとしては以下のような。伝わるかな・・。

#!/usr/bin/perl -w
use strict;
sub nihon{ print "日本¥n"; }
sub japan = nihon; # これ!!!
&nihon(); # "日本"
&japan(); # "日本"
209デフォルトの名無しさん:2011/03/03(木) 23:35:15.79
サブルーチンのリファレンスを受け取ってデリファレンスする方法だとこんな感じ

#!/usr/bin/perl -w
use strict;
sub nihon{ print "日本\n"; }
my $japan = \&nihon;
&nihon(); # "日本"
$japan->(); # or &{$japan}() # "日本"
210デフォルトの名無しさん:2011/03/03(木) 23:38:44.67
その例のとおりに動かすだけなら
*japan = \&nihon;
あるいは
sub japan { goto &nihon; }
など。
両者の違いは自分で考えてくれ。
211デフォルトの名無しさん:2011/03/04(金) 01:16:46.45
オブジェクトにすれば継承云々でやりたいことが出来そうな気がする

自分はやり方分からないけど、パッケージの勉強をしようとググってたとき、
質問者がやりたい事ができそうなサンプルが確かあった


たしか、animal っていうのがあって、そこから cat だの dog だのが派生して。みたいなだったような気がする。
詳細は perl パッケージ とか、perl オブジェクト指向 とか、perl パッケージ 継承 とかでググってみて。
212デフォルトの名無しさん:2011/03/04(金) 05:41:40.26
>>211
継承は継承もとのメソッドを使えるようになるだけ
同名のメソッドを定義し直すことはできるけど、
同機能のメソッドを定義することは別の話
つーかそんなことする必要性を感じないんだが
213デフォルトの名無しさん:2011/03/04(金) 05:47:53.41
>>212
それいったら内容が同じで名前だけ違う関数を作ることだって
そんなことする必要性を感じないんだが
214デフォルトの名無しさん:2011/03/04(金) 09:23:37.82
>>210-213
ありがとうございます。
参考にします。
215デフォルトの名無しさん:2011/03/04(金) 11:20:10.87
>>4って誰が考えたの?元ネタどこ?
216デフォルトの名無しさん:2011/03/04(金) 12:35:01.52
>>3
217デフォルトの名無しさん:2011/03/04(金) 15:45:58.08
>>4 はオレが作った。文字コードに絡む同じような質問が多くてうざかったから。
元ネタは忘れたけど、例えば「use open IO」で検索すると、
詳しく解説しているページが見つかる。
218伝説のPerl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/04(金) 20:19:53.01
catalystとmojoの違い教えてください
本当にこまってます
219伝説のPerl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/04(金) 20:54:53.38
自己解決しました

チャットのログをDBに保存したいのですが

aaa:あいうえお
baka:しね
afe:ああえ
kiero:かす

ってあったとします スクリプトを起動してる間
ずっとログを取得して保存したいです
ですが、なにも発言されずにそのままだったらデータを保存しないようにしたいです
ログが変わってたら保存とかやりたいのですが

どうやって比較すればいいんでしょう?
1回データ取得してループさせて、DBからデータ取り出して比較するしかないんでしょうか?おしえてください
220伝説のPerl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/04(金) 22:12:41.39
チャットのログをDBに保存したいのですが

aaa:あいうえお
baka:しね
afe:ああえ
kiero:かす

ってあったとします スクリプトを起動してる間
ずっとログを取得して保存したいです
ですが、なにも発言されずにそのままだったらデータを保存しないようにしたいです
ログが変わってたら保存とかやりたいのですが

どうやって比較すればいいんでしょう?
1回データ取得してループさせて、DBからデータ取り出して比較するしかないんでしょうか?おしえてください
221伝説のPerl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/04(金) 22:50:06.64
教えてもらえるコツをおしえてください
222デフォルトの名無しさん:2011/03/04(金) 23:08:44.55
おおゆうしゃよ、それをすてるだなんてとんでもない!
というわけでコテ外せばいい
223デフォルトの名無しさん:2011/03/04(金) 23:15:49.19
おしえてください 王様
224デフォルトの名無しさん:2011/03/04(金) 23:18:31.46
sageも覚えました
225デフォルトの名無しさん:2011/03/04(金) 23:23:49.29
本当に名無しでいいのかな???
逆に教えてもらえなさそうだけど?
226デフォルトの名無しさん:2011/03/05(土) 00:02:17.29
なにか質問しているのかな
でも肝心の質問部分が自動あぼーんされてて読めんw
227デフォルトの名無しさん:2011/03/05(土) 01:13:44.35
Perlがつくコテは糞しかいないだとか
228デフォルトの名無しさん:2011/03/05(土) 01:27:31.86
糞尿に失礼極まりない
229デフォルトの名無しさん:2011/03/05(土) 01:34:34.58
そうだったスマソ
230デフォルトの名無しさん:2011/03/06(日) 00:41:59.73
>>220
伝説のPerl忍者ともあろう者が質問するレベルの難問とはとても思えない
釣りにしても稚拙すぎる
さてはとうとう鳥割れで偽物が出たのか
231デフォルトの名無しさん:2011/03/06(日) 10:22:35.91
srand;

$hello = rand;

$hello < 1 and $line = $_ while <FILE>;
$hello < 1 and $lines = $_ while <FILEs>;

乱数を初期化しているつもりなのですが
何回やっても
同じものしか表示されないのですが
なぜでしょうか
232デフォルトの名無しさん:2011/03/06(日) 10:27:13.66
わけがわからないよ
233デフォルトの名無しさん:2011/03/06(日) 10:39:37.86
while(1)
{
open(FILE,"<English.txt") or die print "File Error\nNot Fine English.txt";
open(FILEs,"<Japanese.txt") or die print "File Error\nNot Fine Japanese.txt";
srand;

$hello = rand;

$hello < 1 and $line = $_ while <FILE>;
$hello < 1 and $lines = $_ while <FILEs>;
close(FILE);
close(FILEs);
chomp ($line);
chomp ($lines);
print "$line > ";
chomp($input = <STDIN>);
if($lines eq $input)
{
print "正解\n";
} else {
print "不正解\n";
}
}
もとはこんな感じでテキストの中身を一行読み取って出力させるやつなのですが
一番最後の行しか読み込まないのです。。。
234デフォルトの名無しさん:2011/03/06(日) 10:50:08.86
for(1..100){print rand,"\n"}
これを走らせて rand の返す値の範囲を見てみるんだ。
235デフォルトの名無しさん:2011/03/06(日) 10:53:14.71
先に一冊薄いperlの本を通読した方が良いと思う。
アナグラムか何かかに見えるくらい不可解なことになっている。
236デフォルトの名無しさん:2011/03/06(日) 11:27:35.89
無引数のrandの返す値は0以上1未満だから常に$hello < 1だよな。
何をしたいのかよく考えた方がいい。
237デフォルトの名無しさん:2011/03/06(日) 11:58:12.78
俺が改良してやる。ちなみに現バージョンのPerlではsrandは敢えて使う必要はない。
種は自動で初期化されるからな。
もし使うなら1スクリプトにつき1回だけが推奨。while(1)ループ中で毎回使うのは愚。

open my $fh, '<', 'English.txt' or die $!;
my @english = <$fh>;
close $fh;
chomp @english;
open $fh, '<', 'Japanese.txt' or die $!;
my @japanese = <$fh>;
close $fh;
chomp @japanese;
while (1) {
my $line = int(rand() * @english);
print "$english[$line] > ";
chomp(my $input = <>);
print $japanese[$line] eq $input ? "正解\n" : "不正解\n";
}
238デフォルトの名無しさん:2011/03/06(日) 12:15:02.49
>>237さん
ありがとうございます
無事に動きました
Perlではsrandでわざわざ初期化する必要なかったんですか
勉強になりました
239デフォルトの名無しさん:2011/03/06(日) 12:22:13.52
>>237
まったくの徒労だったな。

> Perlではsrandでわざわざ初期化する必要なかったんですか
> 勉強になりました
240デフォルトの名無しさん:2011/03/06(日) 12:25:30.42
無事に動いたよかったよかったで終わらせないで
自分の書いたコードとどこが違うのかよく比べて
勉強してくれればそれに越したことはないけどね
241デフォルトの名無しさん:2011/03/06(日) 16:18:41.99
> Perlではsrandでわざわざ初期化する必要なかったんですか
> 勉強になりました

こちらも勉強になりますた!
プログラマの中にはこういう理解を行っている人もいるんですね!
今後それらの人たちを見極めるために上のrand例題を使いたいと思います!
非常にスバラしい知見をどうもありがとうございました!!
感謝します!!!
242デフォルトの名無しさん:2011/03/06(日) 21:20:00.90
>>231 はもう見に来ないかな。
・乱数の使い方がまずい
・ループを回るごとにファイルのopen readをやるのは無駄
くらいは把握してくれてればいいんだけど。

乱数については >>233 のやりたかったのはたとえば、

> $hello = rand;
> $hello < 0.5 and $line = $_ while <FILE>;

みたいなことだったのかもしれない。アイデアとしてはちょっと面白いかもと思った。
しかし、これだとループ一発目で $hello < 0.5 が真になる確率が 1/2 なので、
ループを何度回しても2回に1回はEnglish.txtの1行目が表示されてしまうモンテカルロ。
$hello < n の n の値を何に指定しても、結局ばらつきを均等にはできないモンテカルロ。

まあでもホビープログラマなら >>233 みたいなコーディングも
有りじゃないかなと個人的には思ったりして。ちゃんと動かないと意味ないんだけどさ。

あと int(rand() * @english); は int(rand(@english)); でよかったんだな。余談。
243デフォルトの名無しさん:2011/03/06(日) 21:42:08.85
rand($.) < 1 and $line = $_ while <FILE>;
が正しい、どっかのせっかちが写し間違えたんだろ
244デフォルトの名無しさん:2011/03/06(日) 22:24:38.92
つまらんw 出直せ
245デフォルトの名無しさん:2011/03/07(月) 01:07:23.88
CSSを読み込みたいんですがTTで

my $var={
y=>$y,
name=>'作者',
img=>'./img/wing.png',
color=>'red',
};
print "Content-Type:text/html;charset=UTF8\n\n";
$tt->process("up.tt",$var);
print << "HTML";
aiueo
HTML
$tt->process("down.tt",$var);



up.ttで
<link href="./css/style.css" rel="stylesheet" type="text/css">
ここののstyle.cssで読み込んだ

#aaa{
background-color:[% color %];
}

の色をかえたいんですが
どうやったら引き継がせることができますか?
[% color %]を使えるようにしたいんですが教えてください
246デフォルトの名無しさん:2011/03/07(月) 01:33:04.49
up.ttっつーテンプレート(HTML)中からリンクしている外部CSSファイルは
ブラウザで表示される段階で初めて読み込まれる訳だから
サーバ側でテンプレート適用するのはムリだろ
どうしてもやりたきゃ
<link href="./css/style.css" rel="stylesheet" type="text/css">
のすぐ下に
<style type="text/css">
#aaa{
background-color:[% color %];
}
</style>
って入れとけば?
247デフォルトの名無しさん:2011/03/07(月) 07:54:27.07
TTはHTML限定でもないんだし
外部CSSファイル用に別のテンプレートを用意して
別途そっちから出力してやればいいのではなかろうかと
248デフォルトの名無しさん:2011/03/07(月) 11:02:05.48
ありがとう

246みたいなやりかたするよ

>>247
うん
249デフォルトの名無しさん:2011/03/07(月) 12:58:33.52
Mojoliciousの読み方おしえてください
250デフォルトの名無しさん:2011/03/07(月) 17:01:10.08
素直に読むならモジョリシャス








かな?
251デフォルトの名無しさん:2011/03/07(月) 17:16:05.89
フレームワークがどうしてもいやなんですが

やっぱり中規模あたりなアプリケーションはフレームワーク使わないと組めないでしょうか?

あとURLとかmojoやCatalystみたいに 日付でアクセスさせて認識させたいんですが

どうすればいいでしょう?
 
http://example.com/2011-3-7
みたいに
252デフォルトの名無しさん:2011/03/07(月) 17:39:16.38
組めないことはないけど使ったほうが楽だと思うけどな〜。
ある程度慣れるのに時間はかかるのでその間は大変だけど。
なんで嫌なのかわからない。
253デフォルトの名無しさん:2011/03/07(月) 17:41:14.67
めんどくさいんだよ
まあしょうがないけど
なれてナインだろうけど
254デフォルトの名無しさん:2011/03/07(月) 20:22:28.82
学習コスト以上のリターン確実にあるね。
勉強兼ねてるんなら自前で良いと思うけど。
255デフォルトの名無しさん:2011/03/07(月) 20:47:19.37
print "Content-Type:text/html;charset=UTF8\n\n";
$tt->process('tmp/up.tt',$var);
$tt->process('tmp/index.tt') if $n==1 or !$n;
$tt->process('tmp/down.tt',$var);

ってprocessでやってるけどWRAPPERっていうやつ使うとどうなるの?
いまいちわかりずらいラッパー教えて
256デフォルトの名無しさん:2011/03/08(火) 16:09:16.27
use lib でパスを追加するとサーチパスの前に追加されるんですが、後ろに追加するにはどうすればいいんでしょうか?
257デフォルトの名無しさん:2011/03/08(火) 17:19:08.57
use lib は自前で用意したライブラリの直前に書く
自前のライブラリは一番最後に書く


普通はこうだと思うから、先頭に追加された方がオーバーヘッド少ないのでは?
258デフォルトの名無しさん:2011/03/08(火) 18:17:00.25
INIT { push @INC, () }
259デフォルトの名無しさん:2011/03/08(火) 19:01:34.46
>>257,258
ありがとうございます。それで大丈夫でした。

サーチパスの後ろに追加したい理由は、Aというモジュールがそのサーバ上に無い
場合に、自分がアップしたファイル群の __modules とかなんとかのフォルダに置
いた所からロードしてもらおうかと思って。

サーバにあればそれを使って、無ければ __modules から使う・・、みたいな。
260デフォルトの名無しさん:2011/03/08(火) 19:34:57.94
自己紹介乙
261デフォルトの名無しさん:2011/03/09(水) 12:23:00.70
ここの2chのPerlのIRCないの?
262デフォルトの名無しさん:2011/03/09(水) 12:30:17.25
知らない
263デフォルトの名無しさん:2011/03/09(水) 12:36:18.47
いちいち知らないとか文字にださなくていいようざいから
264デフォルトの名無しさん:2011/03/09(水) 12:43:01.30
Treeなんとかはコテつけろよ
265デフォルトの名無しさん:2011/03/09(水) 14:57:56.85
use utf8;

って use strict; 同様必ず全てに付けてますか?
それとも、必要な箇所のみブロックで?
266デフォルトの名無しさん:2011/03/09(水) 15:06:41.77
どうしても必要なスクリプトだけに
267デフォルトの名無しさん:2011/03/09(水) 17:49:56.87
IRCの2chのやつ誰か
268デフォルトの名無しさん:2011/03/09(水) 17:57:01.93
Web prog板の質問スレに書き込んでしまいました。
マルチになってますが、よりふさわしそうなこちらで質問させてください。
http://upload.restspace.jp/src/upload1724.zip.html
にファイルをまとめてあります。
サンプルとなるようなプログラムを改良してみたtest.plですが、期待通りに動きません。
どこが悪いのか、ご指摘いただければありがたいです。

やりたいこと
deseq_result.txtのtagというカラム
annotated_all_tags.txtのtagというカラム
を比較します。
deseq_result.txtのtagの要素がannotated_all_tags.txtのtagと一致すれば
deseq_result.txtのカラムの最後にannotated_all_tags.txtのtag以外の要素を加えます。

カラム名でいえば、
tag baseMean baseMeanA baseMeanB foldChange log2FoldChange
pval padj resVarA resVarB origin description variant
と並べてresult.txtに出力したいのです。

既にこの時点でつまずいていますが、
もし、deseq_result.txtのtagの要素がannotated_all_tags.txtのtagと一致しない場合は
そのままdeseq_result.txtのすべての要素をresult.txtに出力したいです。
どうぞよろしくお願いします。
269デフォルトの名無しさん:2011/03/09(水) 18:22:02.90
2chのIRC教えてください
270デフォルトの名無しさん:2011/03/09(水) 18:46:20.43
ありません
271デフォルトの名無しさん:2011/03/09(水) 19:56:45.25
PerlのIRCどこがありますか?
272デフォルトの名無しさん:2011/03/09(水) 20:11:23.71
>>268
ttp://codepad.org/qh8dA7Qh
どこの学部かは全然分からなかったけれども研究頑張ってくだしあ。
あとdataとdatumで恥ずかしいからdatasはペケだった
273デフォルトの名無しさん:2011/03/09(水) 20:20:31.71
274デフォルトの名無しさん:2011/03/10(木) 00:48:41.43
DBIxでallで取得したフィールドのデータを無名ハッシュにいれて

TTにおくって
process('test.tt',$var);みたいに使いたいんだけど
いちいち
$res->all;取得したのを
ハッシュに代入して
$varみたいにやるの大変だから、もっと簡単にTTにおくるほうほうないの?
おしえて
275デフォルトの名無しさん:2011/03/10(木) 00:52:42.27
my $a={};
for($res->all)
{
push @{$a->{id}},$_->id;
push @{$a->{title}},$_->title;
push @{$a->{body}},$_->body;

}

以外にやりかたない?・・・おしえて〜〜〜
276デフォルトの名無しさん:2011/03/10(木) 01:11:58.39
2chのPerlのIRCってイミわかんないよな
277デフォルトの名無しさん:2011/03/10(木) 11:36:23.93
274です 早く教えてください
test.ttでDBIxで取得したデータをつかいたいんですが

やっぱりdb.cgiみたいに やって出力するしかいないんでしょうか?

#body
print "Content-Type:text/html;charset=UTF8\n\n";
$tt->process('tmp/up.tt',$var);
$tt->process('tmp/index.tt') if $n==1 or !$n;
$tt->process('tmp/chat.tt') if $n==2;
$tt->process('tmp/tool.tt') if $n==3;
$tt->process('tmp/koza.tt') if $n==4;
$tt->process('tmp/profile.tt') if $n==5;
$tt->process('tmp/down.tt',$var);


tool.ttで使いたいんです教えてください
やっぱり別にtoo.cgiみたいに別ページ作ってそっから表示したほうがいいんでしょうか?
ttに取り込む方法おしえてください
278デフォルトの名無しさん:2011/03/10(木) 11:44:41.60
もっと礼儀正しくして
一週間くらい我慢して待っていたら
誰か教えてくれる人が出てくるかもしれないが
保証はできないな
279デフォルトの名無しさん:2011/03/10(木) 11:45:30.38
自分で精一杯だから教えてくれないんですか?
やっぱりPerlのやつは忙しいっていうか自分オタクですね
自分オタク

全然教えてくれない自分オタクばっかりだな
280デフォルトの名無しさん:2011/03/10(木) 11:46:15.40
教えたら自分より詳しくなっちゃうの困るんですね
わかります
281デフォルトの名無しさん:2011/03/10(木) 11:50:51.34
よくわかったな!
282デフォルトの名無しさん:2011/03/10(木) 11:52:41.01
わざわざハッシュに入れ直さなくても$resそのまま渡して使えなかったっけ
283デフォルトの名無しさん:2011/03/10(木) 11:53:06.16
お前がバカな質問してる事に気が付けば、俺は嬉しい気持ちになれるw
284デフォルトの名無しさん:2011/03/10(木) 11:53:47.69
そして、教えると自分より詳しくなって
仕事とられたりする確立が上昇していくからいやなんですね^^;
285デフォルトの名無しさん:2011/03/10(木) 12:02:39.72
my $schema=BBS::Schema->connect('dbi:mysql:bbsdb','root','oboro266');
my $res=$schema->resultset('bbs');
print Dumper $res->all;

ダンプしたらハッシュだったけど
$VAR3 = bless( {
'_result_source' => $VAR1->{'_result_source'},
'_in_storage' => 1,
'_column_data' => {
'body' => 'あほ',
'num' => '4',
'name' => 'aa'
みたいになってるから

だから$resおくってもできない_result_sourctとかでリファレンスしないと

教えてください

取得したデータをtoo.ttで
process(tool.$var);見たいに使いたいです
$varは検索結果とか入ってる奴です
286デフォルトの名無しさん:2011/03/10(木) 12:04:20.00
>>282
そのまま使えませんでした
287デフォルトの名無しさん:2011/03/10(木) 13:01:33.54
「教えてください」「教えてください」を読んでたら
宮沢賢治の「ツェねずみ」を思い出した
288デフォルトの名無しさん:2011/03/10(木) 13:17:37.22
ある文字列内に、特定の文字列が何個有るかを調べる場合はどのようにしたら
速いでしょうか?

とりあえず以下を考えましたが他に速い方法ないですか?
index関数を使用する方法もやってみましたが遅くて。

-----------------
my $text = 'あるないないあるあるある';
my $count = 0;
while($text =~ /ある/g){
 $count++;
}
print $count;
289268:2011/03/10(木) 13:23:54.69
>>272
>>272
ありがとうございます。ありがとうございます。
でも、空のデータが出力されます。
コンソールにも何も出ません。
何をチェックすればよいでしょうか

それに、一晩たって読み返してみると、
そもそも、元々のコードで
やりたいことが伝わらなかったように思います。
ttp://codepad.org/qh8dA7Qh
にそって、やりたいことを次のレスに書きます。

290268:2011/03/10(木) 13:24:34.86
0)ハッシュを初期化 my %annotate_data = ()
1)annotated_all_tags.txtからデータをを一行ずつ読みこむ
2)データをタブで区切り、@t 取り込む my @t = split /\t/;
3)$geneとは、@t の第一要素である。my $gene = shift @t;
4)$geneをキーにして@tをハッシュに取り込む
$annotate_data{$gene} = join ( "\t", @t );

5) deseq_result.txtからデータを一行ずつ読むこむ。
6)データをタブで区切り、@t 取り込む my @t = split /\t/;
7)$geneとは、@t の第一要素である。my $gene = shift @t;
8)@tをタブ区切りでOUTに書き込む。
9)もし、ハッシュに存在すれば、コンソールに出力print "match gene, $gene.\n";
10)そして、ハッシュデータを追記。print OUT $annotate_data{$gene};
11)ハッシュが存在しなければ、print "DON'T match gene, $gene.\n";
12)OUTに改行を追記。print OUT "\n";
291268:2011/03/10(木) 13:25:16.95
そして、うまく伝わらなかったと思われること。
3)と7)ですが、@t の第一要素なので、my $gene = @t[0] ?

4) と10)ですが、10)で追記したいのは、%annotate_dataのうち、$geneを除いた要素なので、
ハッシュとしては、@tのなかで、geneとそれ以外の要素、という形でわけて取り込めばよいですか?
$annotate_data{$gene} = join ( "\t", shift @t ); ?

データはこちらです。
http://upload.restspace.jp/src/upload1724.zip.html
どうぞよろしくお願いします。
292デフォルトの名無しさん:2011/03/10(木) 13:34:31.87
しょうがないからこれでやったよ
my $a={};
for($res->all)
{
push @{$a->{id}},$_->id;
push @{$a->{title}},$_->title;
push @{$a->{body}},$_->body;

}

293デフォルトの名無しさん:2011/03/10(木) 14:04:45.95
イタタタタ
294268:2011/03/10(木) 14:05:35.05
動きました!!!!!!!
my %annotate_data = ()
を%annotate_data = ()
にして、あとは出力を手直ししたら行けました。

お騒がせしました。
295デフォルトの名無しさん:2011/03/10(木) 14:07:27.20
!!!大量につけててチョンみたい

謝謝!!!みたいに居たすぎる
296デフォルトの名無しさん:2011/03/10(木) 15:22:29.74
>>295
居たすぎる、とかまともに漢字変換もできない奴は東アジア漢字文化圏からまとめて出ていけや
なんてね
297デフォルトの名無しさん:2011/03/10(木) 15:26:57.27
WEBのやつってばかだからSQLわからないやつおおいよね
298デフォルトの名無しさん:2011/03/10(木) 16:27:20.39
>>288
my $count = @{[ $text =~ /ある/g ]};
299デフォルトの名無しさん:2011/03/10(木) 16:38:38.15
use utf8;
use Benchmark qw(timethese);

timethese(
undef,
{
re => sub {
my $text = 'あるないないあるあるある';
my $count = 0;
while ($text =~ m{ある}g) { $count++; }
},
re_list => sub {
my $text = 'あるないないあるあるある';
my $count = @{[$text =~ m{ある}g]};
},
index => sub {
my $text = 'あるないないあるあるある';
my $count = 0;
my $pos = 0;
while (($found = index($text, 'ある', $pos)) >= 0) { $count++; $pos = $found + 2; }
},
s => sub {
my $text = 'あるないないあるあるある';
my $count = ($text =~ s{ある}{}g);
},
split => sub {
my $text = 'あるないないあるあるある';
my $count = split(/ある/, $text, -1) - 1;
},
}
);
300デフォルトの名無しさん:2011/03/10(木) 16:39:30.91
と、いろいろやってみたがこのケースだと//gでループ回数数えるのが
速いみたいだよ。

Benchmark: running index, re, re_list, s, split for at least 3 CPU seconds...
index: 4 wallclock secs ( 3.08 usr + 0.00 sys = 3.08 CPU) @ 206181.82/s (n=635040)
re: 4 wallclock secs ( 3.24 usr + 0.00 sys = 3.24 CPU) @ 368939.81/s (n=1195365)
re_list: 2 wallclock secs ( 3.14 usr + 0.00 sys = 3.14 CPU) @ 215722.29/s (n=677368)
s: 2 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 257762.30/s (n=806796)
split: 4 wallclock secs ( 3.15 usr + 0.00 sys = 3.15 CPU) @ 317109.52/s (n=998895)
301デフォルトの名無しさん:2011/03/10(木) 16:41:44.06
単純な切り出し、検索は substr とか index で代用出来るならその方が良いよ。

前にベンチマークとったけど、圧倒的に関数の方が速かった。
302デフォルトの名無しさん:2011/03/10(木) 18:01:07.47
#! /usr/bin/perl

use WWW::Mechanize;
use strict;

my $mech = new WWW::Mechanize(autocheck => 1);

$mech -> get('http://yuzuru.2ch.net/test/read.cgi/gamef/1297000987/');

$mech->submit_form(
fields => {
FROM => '名無し',
mail => 'sage',
MESSAGE => 'ここにメッセージ',
},
button => 'submit'
);

print $mech->content;

2ちゃんのスレに書き込むプログラム書いているのですが
文字が書き込まれないのですがどうすればいいでしょうか
303デフォルトの名無しさん:2011/03/10(木) 18:17:38.80
Cookie の処理ってどうなってる?
304デフォルトの名無しさん:2011/03/10(木) 18:23:28.95
>>300
ありがとうございます。
//g で普通にやったほうが速いみたいですね。indexとか使うとこの用途の場合は遅い・・。
305>>302:2011/03/10(木) 18:25:43.68
>>303
その辺のことはまったくわかりません・・・
306デフォルトの名無しさん:2011/03/10(木) 18:35:23.50
hako=>[{num=>$var2->{num}},{name=>$var2->{name}},{body=>$var2->{body}}]
}) if $n==3;

しょうがないからこうやったよ。
307デフォルトの名無しさん:2011/03/10(木) 18:40:56.12
ばかじゃかけないコードだね
かわいそう

DBIxからTTにおくってるよ  あほはリファレンスわからないからわからないだろうけど
308デフォルトの名無しさん:2011/03/10(木) 18:43:43.94
てsr
309デフォルトの名無しさん:2011/03/10(木) 18:52:33.65
普通にlwpでやれよ
310デフォルトの名無しさん:2011/03/10(木) 19:31:01.28
>>301が言うようにsubstrが速いね。use bytesでバイト単位で処理させるとさらに速い。

use utf8;
use Benchmark qw(:all);
my $text = 'あるないないあるあるある';

cmpthese ( timethese( undef, {
substr => sub {
my $count;
my $word_len = length 'ある';
for my $i ( 0 .. length($text) - $word_len ) {
$count++ if substr($text, $i, $word_len) eq 'ある';
}},
bytes => sub {
use bytes;
my $count;
my $word_len = length 'ある';
for my $i ( 0 .. length($text) - $word_len ) {
$count++ if substr($text, $i, $word_len) eq 'ある';
}},
re_list => sub {
my $count = @{[$text =~ m{ある}g]};
},}));

Benchmark: running bytes, re_list, substr for at least 3 CPU seconds...
bytes: 2 wallclock secs ( 3.13 usr + 0.01 sys = 3.13 CPU) @ 21894.42/s (n=68639)
re_list: 4 wallclock secs ( 3.10 usr + 0.02 sys = 3.12 CPU) @ 58206.79/s (n=181838)
substr: 4 wallclock secs ( 3.03 usr + 0.00 sys = 3.03 CPU) @ 38457.81/s (n=116681)
        Rate bytes substr  re_list
bytes  21894/s   --  -43%   -62%
substr  38458/s   76%   --   -34%
re_list  58207/s ..166%   51%    --
311デフォルトの名無しさん:2011/03/10(木) 20:08:36.01
凄いことが判明した
[% FOREACH i=[0..2] %]
[% name.${i} %]
[% num.${i} %]
[% END %]


${i}みたいにやるとちゃんと配列取得できます
name.iじゃなくて ${i}だったようです

これで悩み画消えました
312デフォルトの名無しさん:2011/03/10(木) 22:11:04.66
>>274
hashrefinflator使えば?
TTは勝手にメソッドかハッシュか判別して辿ってくれるから
ハッシュにしなくても大丈夫なはずなんだけど。
FW使ってもう一段上でblessされてたりすると判別失敗することはある。
313デフォルトの名無しさん:2011/03/10(木) 22:48:56.78
hashrefinflatorっていうやつぐぐってみる
314デフォルトの名無しさん:2011/03/10(木) 23:00:06.26
qwの中に , を入れたら以下のように怒られたのですが、
--------
Possible attempt to separate words with commas
--------
セパレータとしてではなくホントに , を "," として配列に含めたい場合 qw の外で書かないといけないんでしょうか?
315デフォルトの名無しさん:2011/03/10(木) 23:42:18.54
use warnings;
{
no warnings qw/ qw /;
my @l = qw/ a , b c /;
}
316デフォルトの名無しさん:2011/03/10(木) 23:57:08.67
意図が良く理解できないんですが
317デフォルトの名無しさん:2011/03/11(金) 02:33:37.27
>>316
「怒られた」んじゃなくて「警告が出た」だけだから、気にしなくてもいい。
やりたいことがちゃんと分かって書いてて意図どおりに動いているので。
でもPerlは「ひょっとすると書き間違いかもよ?」と警告を出してくれる。
「大丈夫、それはちゃんと分かって書いてるし意図どおりに動いているから」
ということをPerlに伝えるために、該当部分だけ警告が出ないようにしておく、
ということだろうな。qw/qw/で一瞬、ん? 何それ? となるかもしれないけど。ていうか俺はなったけど。
318デフォルトの名無しさん:2011/03/11(金) 10:38:55.73
>>317
ありがとうございます。
no warnings でないとこの警告は止まらないんですね・・。
319デフォルトの名無しさん:2011/03/12(土) 10:48:05.13
>>310で、bytes::length、bytes::substrとbytesを明示すれば10倍ぐらい速くなるな(ActivePerlで)。
何故速くなるかは、PerlのCソースを見ないとわからないのかな?

indexより正規表現のほうが速いのは正規表現エンジンがかなり最適化されてるからなのか?
ただ、bytes::indexとすると正規表現より速くなった。
320デフォルトの名無しさん:2011/03/12(土) 16:56:21.02
cgi環境で以下のどれでも対応出来るようにするにはどのようにしたらよいでしょうか?

#!/usr/bin/perl
#!/usr/local/bin/perl
321デフォルトの名無しさん:2011/03/12(土) 16:58:36.78
ln -s
322デフォルトの名無しさん:2011/03/15(火) 09:19:43.11
認証サイトをつくりたいんですが
どんなモジュールがありますか?
openID意外でなんか教えてください

データベースを使う奴がいいです、なにがあるでしょうか?
認証サイトをつくるときに使うアクセス制御のモジュール

教えてください
323デフォルトの名無しさん:2011/03/15(火) 09:21:51.54
自分で作れ。パスワードのハッシュをデータベースに格納して比較するだけ。
324デフォルトの名無しさん:2011/03/15(火) 09:29:26.64
そうだけどさ

それでフォームから送られたアカウント情報とDBの比較してログインさせたらどうするの?
ユーザー名とかグループによって見えるページかえたいんだけど

322の場合はどんなやりかたでやってる?
325デフォルトの名無しさん:2011/03/15(火) 10:25:09.22
「体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践」
作者: 徳丸浩、出版社/メーカー: ソフトバンククリエイティブ

これを読む。PHPベースだけど役に立つかも。
ちなみに俺は未見。
326Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/03/15(火) 10:30:03.06
そんなのセキュリティのことだろ
わざわざ書籍買う必要ない
327デフォルトの名無しさん:2011/03/15(火) 10:33:59.58
ログインさせたら一意なIDを生成して、必要なデータを関連付けて
サーバー側セッションに保存する。
ブラウザにはセッションIDだけをCookieで渡す。
その後はセッションIDで場合分けする。

以上
328デフォルトの名無しさん:2011/03/15(火) 13:09:03.50
Perl2EXEを使ってexe形式にしたのですが実行できません。
どのようにすればいいのか教えてください
source:
use Tk;
use encoding qw(shift-jis);
MainWindow->new()->Label(-textvariable=>\ "てすと1")->pack;
MainLoop;
error:
encoding: Unknown encoding 'shift-jis' at C:\ディレクトリ\ファイル名.exe lin
e 2
BEGIN failed--compilation aborted at C:\ディレクトリ\ファイル名.exe line 2.
.plの状態ではしっかり動作します!
329ななしさん:2011/03/15(火) 13:51:28.28
Catalyst::Model::DBIC::Schemaで生産したクラス名が
bbsテーブルのばあいBb.pmになってたんだけど何でですか?教えてください
なんでBbs.pmじゃないんでしょうか
330デフォルトの名無しさん:2011/03/16(水) 13:32:28.54
>>328

そのエラーメッセージを読んで、どうすればいいか解らないわけ?
まあ、忠実に>>4に従えば、動くようになるかもしれないな。
331デフォルトの名無しさん:2011/03/17(木) 10:37:21.14
DBIx::Class::Schemaをつかって作ったクラスつかおうとしたら
5000エラーでるんです

index.cgiに use App::Schema;ってかくとエラー
なぜ?

mod_perl使ってからエラーがではじめました

mod_perl使わないとエラーがでません

ほかのCGIはエラーがでません
use App::Schema;っ手各とエラーがでます

App::Schemaは同じフォルダにあります

教えてください
332デフォルトの名無しさん:2011/03/17(木) 11:42:21.20
ま た お 前 か
333デフォルトの名無しさん:2011/03/17(木) 16:09:50.12
教えてください 精神が狂いそうです
334デフォルトの名無しさん:2011/03/17(木) 21:15:14.87
多分カレントディレクトリが/usr/sbin/httpdとかになってて
パスが通ってないんじゃないかな。
use lib 'index.cgiまでの絶対パス';
と書いて問題の切り分けをしてみれば?
335デフォルトの名無しさん:2011/03/18(金) 03:47:44.92
そもそも「5000エラー」って何だ?
336デフォルトの名無しさん:2011/03/18(金) 09:03:05.26
mod_perlが邪魔して多様です
libとcwdつかってなおせました
ありがとうございました
337デフォルトの名無しさん:2011/03/22(火) 16:42:49.63
http://www.tohoho-web.com/lng/200001/00010144.htm
これと同じことをCatalyst使ってもっと綺麗で短くできないものか
datファイルもDBも使わないhtmlだけの掲示板が欲しい
338デフォルトの名無しさん:2011/03/23(水) 12:43:29.58
http://perldoc.jp/docs/perl/5.10.1/perlfaq4.pod

下の方が壊れててみれない
誰か直さないとまずくないか?

Why don't my <<HERE documents work?¶

(なぜ私の <<HERE ドキュメントがうまく動かないのでしょう?)

以下の三つの点を確認してください。

POD ERRORS¶

Hey! The above document had some coding errors, which are explained below:

Around line 2583:
=end original without matching =begin. (Stack: =begin original; =over)

Around line 2699:
You forgot a '=back' before '=head1'
339Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:26:14.03
gitはぶのつかいかたおしえてもらってもいいかな?
340Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:27:15.02
得するひろむ
がなんとかするからほっとけよ
341Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:28:21.72
俺は他力本願じゃないからな

別に、見て見ぬふりしてないしな

別に俺はそれを直すことがないから
指示待ちでもないしな
342デフォルトの名無しさん:2011/03/23(水) 23:15:37.15
perlでGMTの求め方を教えてください
343デフォルトの名無しさん:2011/03/23(水) 23:23:03.94
>>330
従っても出来ませんが……
344デフォルトの名無しさん:2011/03/23(水) 23:32:56.65
gmtime(time)
345Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:10:06.66
my $schema=MyApp::Schema->connect('dbi:mysql:kasu','root','kasu');
my $rs=$schema->resultset("Book")->search({},{order_by=>{-desc=>['me.isbn']},prefetch=>['book_review']});
while(my $p=$rs->next)
{
print $p->isbn,"\n";
print $p->book_review,"\n";
}

ってやると 

978-4-89100-626-6

978-4-89100-625-9

978-4-8443-2699-1
MyApp::Schema::Result::Review=HASH(0x9d4e618)MyApp::Schema::Result::Review=HASH(0x9d523c8)
978-4-8443-2061-6
MyApp::Schema::Result::Review=HASH(0x9d528c8)MyApp::Schema::Result::Review=HASH(0x9c2cb30)MyApp::Schema::Result::Review=HASH(0x9d4e758)
978-4-8443-2005-0
MyApp::Schema::Result::Review=HASH(0x9d521e8)MyApp::Schema::Result::Review=HASH(0x9c2cb30)
978-4-7981-1992-2
MyApp::Schema::Result::Review=HASH(0x9d525e8)MyApp::Schema::Result::Review=HASH(0x9c2cb30)
978-4-7981-1876-5

978-4-7741-4076-6
MyApp::Scheってでます
346Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:16:52.36
print $p->book_reviewこれを
print $p->book_review->nextかfirst変えると

MyApp::Schema::Result::Review=HASH(0x9d4e618)MyApp::Schema::Result::Review=HASH(0x9d523c8)
978-4-8443-2061-6
の一番最初のMyApp::Schema::Result::Review=HASH(0x9d4e618)が得られるんですが

print $p->book_review->next->bodyとやっても表示されません
print $p->book_review->next->[0]->bodyでもできませんし
やっぱりここはmy @a=$p->book_review->allで配列に全部取得してから表示しないとだめなんでしょうか?
allは配列を返すってなってるので
書籍にはTemplate toolkit向けにつくられており
[% item.book_review.0.body %]で本文表示してるんです
これをTTつかわないでやってみたんですが・・・配列使えませんでした
$p->book_review->[0]ってやっても
Not an ARRAY reference at k.pl line 12.ってでたんですが
foreachとかで回すと全部表示することになってしまうんです
好きな場所の番号えらんで表示したいんですが$p->book_review->[1]->bodyみたいに
でもできません 教えてください 助けてください
困ってます
347Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:21:01.99
978-4-8443-2699-1 のやつには2個のbody(コメント)があります
978-4-8443-2061-6 には3コメント
978-4-89100-626-6 は0件ってかんじです


348Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:27:43.00
my $a=$p->book_review->all;
if($a>0)
{
print $p->book_review->next->body,"\n";
}

これでできました

最初のnextがからだから
Can't call method "body" on an undefined value at k.pl line 12.
ってでてました
ですが、いちいち$aにいれてスカラーコンテキストで配列数得るの大変です
if($a>scalar($p->book_review->all))
じゃできませんでした教えてください
どうやってスカラーコンテキストで評価して配列すうえられますか?$#みたいなのどうやってつかうんですか子の場合
349Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:32:03.81
if(scalar $p->book_review->all>0) が逆でした
すっとぼけてました
すみませんでした

もうできました

ありがとうございました
350Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:40:09.92
my @a=$p->book_review->all;
print $a[2]->body,"\n";


こうしないと取得できないのですが
print $p->book_review->all->[0]->body
これじゃなんで取得できないんでしょうか?教えてください
allが返すのは、配列なのですが

$p->book_reviw->allだと
MyApp::Schema::Result::Review=HASH(0x9589700)
MyApp::Schema::Result::Review=HASH(0x9467b90)
って表示されるので
2番目のやつを表示したいので
$p->book_review->all->[1]->bodyでいけるとおもったんですができません
教えてください 配列にいれないとできないみたいです どうすればいいんでしょう教えてください
351Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:49:55.74
これ答えてくれたらPerl忍者やめます
教えてください
352Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 01:02:47.60
print $p->book_review->slice(1),"\n";
MyApp::Schema::Result::Review=HASH(0x8e85870)
978-4-8443-2061-6
MyApp::Schema::Result::Review=HASH(0x8e85bb0)
978-4-8443-2005-0
MyApp::Schema::Result::Review=HASH(0x8e85690)
978-4-7981-1992-2
MyApp::Schema::Result::Review=HASH(0x8e85450)
978-4-7981-1876-5
978-4-7741-4076-6
MyApp::Schema::Result::Review=HASH(0x8e85cb0)

$p->book_review->slice(2)

978-4-89100-626-6
978-4-89100-625-9
978-4-8443-2699-1

978-4-8443-2061-6
MyApp::Schema::Result::Review=HASH(0x9875ac0)
978-4-8443-2005-0

978-4-7981-1992-2

978-4-7981-1876-5
978-4-7741-4076-6
353Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 01:05:51.92
答えてくださいまってます
354デフォルトの名無しさん:2011/03/24(木) 01:35:02.56
答えるべきなのか、スルーすべきなのか分からんが、
all[n]で取得できても次回の取得前にresetが必要だから意味がない
素直に「my @a=$p->book_review->all;」で取得するべき
逆に、一回しか使わないのであれば、SQLで絞り込むべき
355デフォルトの名無しさん:2011/03/24(木) 02:33:18.21
>>350
>print $p->book_review->all->[0]->body

はallが配列リファレンスを返すことを期待しているが、

my @a=$p->book_review->all;

がちゃんと動くんならallが返すのはリファレンスじゃなくてリストなんだろう。

てことで無理に書くとこうかな?

print (($p->book_review->all)[0]->body);

print [$p->book_review->all]->[0]->body;
356デフォルトの名無しさん:2011/03/24(木) 08:51:55.93
>>35 >>355
昨日これやりました

print [$p->book_review->all]->[0]->body;

これやったのにできなかったのは
#if(scalar $p->book_review->all >0)がなかったから
Can't call method "body" on an undefined valueってでてたからでした
空のリストで値表示しようとさせたからです

Can't call method "body" on an undefined valueで調べてみようと思います
回答ありがとうございました
357デフォルトの名無しさん:2011/03/24(木) 12:09:55.09
foreach $result (@{$yahoo_xml->{Result}}) {
$click_url = $result->{ClickUrl};
print "$click_url\n";
}

とやると@{$yahoo_xml->{Result}}分の回数実行されて数個URLが出てくるのですが
これをforeachを使わずに一つだけ出すことってできますか?
358デフォルトの名無しさん:2011/03/24(木) 12:18:43.04
$result = pop @{$yahoo_xml->{Result}};#前から取り出すならshift
ってことをきいているんだろうか
359デフォルトの名無しさん:2011/03/24(木) 12:46:04.39
$result = ${$yahoo_xml->{Result}}[rand($#{$yahoo_xml->{Result}} + 1)];
とか?
360デフォルトの名無しさん:2011/03/24(木) 12:50:09.28
>>358-359
ありがとうございます。
目的の結果がでました
361Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 12:57:42.76
my $schema=MyApp::Schema->connect('dbi:mysql:kasu','root','kasu');
my $rs=$schema->resultset("Book")->search({},{prefetch=>['book_review'=>'usr']});

prefetchで2個結合させると
DBIx::Class::ResultSet::count(): No such relationship usr on Book at k.pl line 8
ってでます
ちゃんとスキーマクラスにはhas_manyとかやってます
書籍の内容ではTemplate Toolkitでは
[% FOREACH book=list %]
[% FOREACH item=book.book_review %]
ってやってるんですが
$rs->nextとか$rsとかやっても
DBIx::Class::ResultSet::all(): No such relationship usr on Book at k.pl line 8
ってでます
どうすればいいでしょうか?

そもそも、DBICはTT用とかにむいてるんでしょうか?
TT使わないなら、DBIとかつかえってことですか?
教えてください
362Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 13:07:02.90
prefetch=>['book_review'=>'usr']じゃなくて
prefetch=>{'book_review'=>'usr'}

でしたすみませんでした解決しました
363デフォルトの名無しさん:2011/03/24(木) 16:08:04.73
カス忍者うざいよ
364デフォルトの名無しさん:2011/03/24(木) 16:39:28.24
363 :デフォルトの名無しさん:2011/03/24(木) 16:08:04.73
カス忍者うざいよ

wwwwwwwwwwwwwwwwwwwwwwwwwww

wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww

wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww
365デフォルトの名無しさん:2011/03/29(火) 13:25:53.28
Perl の母って誰ですか?

Java の父 James Gosling、Google へ
http://slashdot.jp/it/article.pl?sid=11/03/28/239202

>次は Perl の母あたりが Google に行くに違いない。
366デフォルトの名無しさん:2011/03/29(火) 14:00:04.22
Googleにいくなら

各言語の凄いやつらが
エンペラーっていう団体立ち上げてそこにはいって

Google潰してくれない?
367デフォルトの名無しさん:2011/03/29(火) 15:59:23.62
cpanで、Plaggerを、インストールしたいのだけど、できない。
コマンドラインの言葉のリンク。
http://akiba.geocities.jp/tr4583384/Pluggernotinstall.txt

どうしたら、できるようになりますか?
368デフォルトの名無しさん:2011/03/30(水) 00:43:17.53
my $test = 'SAMPLE';
my $pkg = $test->new;
$pkg->test();


こんなこと出来るのね。
気持ち悪いけど、このお陰で自分のやりたいことが出来るようになった。
369デフォルトの名無しさん:2011/03/30(水) 10:54:47.76
シンボリックリファレンスですよ
そんなのもわからないんですか?

死ね ラジオボタンとかでつかえるだろ
370デフォルトの名無しさん:2011/03/30(水) 11:01:00.25
my $radio=param("radiobox");

$box{$radio}="xxxx";
371デフォルトの名無しさん:2011/03/30(水) 11:16:18.72
local $h{a} = 'A';

local宣言ですが、undefで初期化されると記憶していたので上のコードは、
------------
local %h;
$h{a} = 'A';
------------
と同義なのかと勘違いしてしまっていたのですが、このような記述は
local $h{a} = 'A';
どういう意味になるのでしょうか?
『 $h{a} 』だけが初期化される???
372デフォルトの名無しさん:2011/03/30(水) 11:23:15.85
Perlの皆さん
WebはPHP王に乗っ取られ
システム系はPython先生に乗っ取られ
日本はRuby戦士の縄張りになってしまって
哀れなPerlerですね
373デフォルトの名無しさん:2011/03/30(水) 11:57:31.68
>>371
localは変数の値をどこかにこっそり保存してブロックの最後で
元に戻すだけ、と理解するといいと思う。


374Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:08:34.33
Ruby戦士だもんな ださっ・・・トリッキーさとか、柔軟力とか、オールラウンドちっくがなさそう

戦士だから、術や魔法使えないしな
かわいそう

幅広く立ち回れないかわいそうなRuby
おまけにユーザーも頭悪いし 言ってることが馬鹿げてるよ
発言が、ぐぐればでること直接いってるだけの低能ばっかりだな

忍者たちを舐めないほうがいいよ
戦士とかださいしかっこ悪いしさ気持ち悪いんだけど お前の発言取り消したほうがいいよ
恥ずかしい発言だね君は>>372
そもそも、Perlの真似してでてきたRubyがいきなり調子こきはじめて気持ち悪いよ
気持ち悪いもなにもOOに美徳感じてるハゲしかいねえ死ね
ごみみたいなアプリ作りやがって死んじまえ
375Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:10:29.89
なんかRubyの気持ち悪いゴミが暴れてるな

頭の悪い発言してたしったか君か
376Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:11:53.32
>>372
お前煽りかた下手だよ
気持ち悪いしね
糞みたいなRuby使って車輪の再発明してる雑魚なんですもんねあなたは
Railsつかってゴミアプリでも生産してろよ鼻くそ
てめえの作ったアプリなんて、身内しかつかわねえだろハゲ死ね雑魚
今すぐ消えろゴミクズ虫
377Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:20:45.60
逃げたかカスは
378デフォルトの名無しさん:2011/03/30(水) 13:59:17.50
>>373
分りました。あと、以下みたいに my で作った奴にも local がちゃんと?動作するみたいなんですが、
localってグローバル変数だけじゃなく、レキシカルなものにも動作するもんなんですか?

use strict;
use warnings;

my %h = (a=>'A', b=>'B');
{
 local $h{a} = '_a_';
 print $h{a},"\n";
}
print $h{a}, "\n";
379デフォルトの名無しさん:2011/03/30(水) 14:38:32.19
>>369
パッケージすら最近勉強し始めたばかりだからさ


ラジオボタンに使えるってのがイマイチ意味が分からない
380デフォルトの名無しさん:2011/03/30(水) 14:44:09.31
>>378
レキシカル変数そのものはだめだけどハッシュの1要素だけとかなら
大丈夫みたいだね。俺も知らんかった。

my %hの下で、local %hはエラーになるけどlocal $h{a}はokらしい。
381Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 17:01:18.22
ばかかよ
my %h;
ってやって
local %h;ってできるわけねえだろあほ
localはブロックない有効できるからな
my %h;
$h{a}=10;
{ local $h{a}=30; }

外のが10 変更されない 10のままlocal ローカル
おまえばかだなあ ほんと俺でもわかるのに
382Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 17:07:34.47
医局かできんだよはげ
383デフォルトの名無しさん:2011/03/30(水) 18:11:59.15
>>381
local ってグローバル変数に作用するんですよね・・?
384Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 19:51:59.26
myにもするけど・・・バカ?
385Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 20:05:59.45
Dumpして%main::みてみろよはげ
386Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 20:13:08.09
シンボルテーブル理解してるか?だめなやつdなあ
387デフォルトの名無しさん:2011/03/30(水) 21:34:47.27
>>384
分りました。そうなんですね。
ありがとうございます!
388Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 22:00:49.92
   ∠ ̄丶
  〜|/゚U゚|
──╂∩0二)
   / ⌒i
   (_ノ^U レベルアップ
389デフォルトの名無しさん:2011/03/30(水) 23:27:18.86
いやいや、そういや解決になってない・・・(>_<)

レキシカル変数に対して、
 local $h{a}=30;
 local %h;
上が ok で下がなぜ NG なのか。

そういう風に仕様が 『 決まってんだよ 』 って言われればそれまでですけど。
390Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:40:19.96
>>389
スクラッチパッドという伝説の世界が開かれたから
391Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:45:12.69
my @a;
$a[0]=20;
{local $a[0]=50;}
print $a[0];

どうやら配列でやっても同じなようだな
392Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:46:30.75
Can't localize lexical variable %s

(F) You used local on a variable name that was previously declared as a lexical variable using "my". This is not allowed. If you want to localize a package variable of the same name, qualify it with the package name.

(F) 以前に "my" を使ってレキシカル変数として宣言された変数名に対して local を使いました。 これは認められていません。 同じ名前のパッケージ変数をローカル化したい場合は、 パッケージ名で修飾してください。
393デフォルトの名無しさん:2011/03/30(水) 23:46:34.32
localって自動スワップアウトしてくれてる って認識なんだけど間違ってる?

sub{
 local $i = 10;
 ...
}
  ↓
sub {
 my $tmp_i = $i;
 $i = 10;
 ....
 $i = $tmp_i; # デストラクタ
}
394Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:54:00.84
my $h;
$h=100;
{local $a;}

これがダメなのは前にmyで宣言してるってことが関係あんだろ?

our $h;
$h=20;
{local $h}

localはグローバル変数の値を別の場所にやんだろ

my %h;
my %a;
なんでmyなのに$a[0]と$h{x}でlocalが使えるってことはこの二つがグローバルってこと

俺は知ってるけどおめえなんかに答えおしえねえよかす
395Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 23:55:46.26
すなおにperl-casualできけよはげ
396デフォルトの名無しさん:2011/03/31(木) 00:13:12.55
>>394

単純に、local は自分のスコープ外の変数に関して作用するのかな? と最初思いましたが、

これでは local %h で %h がグローバルなら ok でレキシカルなら NG の理由が説明できない。
397Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/31(木) 00:27:23.46
今必死にバックグラウンドでぐぐってるよPerl忍者たちが
398デフォルトの名無しさん:2011/03/31(木) 00:35:20.97
いや。

忍者でもなければ、おもくそフォアグラウンドでぐぐってる。もう寝るけど。
399デフォルトの名無しさん:2011/03/31(木) 00:39:32.69
>>398
じゃあなんですか?
400デフォルトの名無しさん:2011/03/31(木) 02:38:22.26
単に、localの対象がグローバル変数だけってことじゃないのか。要するに仕様ってだけで。
perl 5以降myが使えるからlocalがグローバル変数のみ対象で誰も何も困らないってことで。
401デフォルトの名無しさん:2011/03/31(木) 08:50:31.94
おまえらちゃんとマニュアル読めよ。perlsubに書いてあるぞ。

いくつかの種類の左辺値もローカル化できます : ハッシュと配列の要素とスライス、 条件文(その結果が常にローカル化可能なもの)、シンボリックリファレンス。 単純変数に関しては、これは新しく、動的スコープを持つ値を作ります。

しかし値の待避と復帰と考えるとわざわざレキシカル変数を除外しなくてもよかった
ような気はする。
402デフォルトの名無しさん:2011/03/31(木) 09:00:20.29
そうなんですね!

WEB+DB PRESS Vol.61 P171 の local の記述で、「グローバル変数」 とあるのに
サンプルのコードがレキシカルだったのがきっかけで質問したのですが、

そういう仕様・・ということですね。>>396で書いたみたいな仕様だと分りやすいのに。
403デフォルトの名無しさん:2011/03/31(木) 11:58:46.22
SortKeys

Default is 1. (true)

デフォルトは、1です。(true)

Tells YAML.pm whether or not to sort hash keys when storing a document.

文書を保存するとき、ハッシュキーを分類するべきかどうか、YAML.pmに話します。

YAML::Node objects can have their own sort order, which is usually what you want. To override the YAML::Node order and sort the keys anyway, set SortKeys to 2.

YAML::Node オブジェクトは彼ら自身のソート順を持つことができます。そして、それは通常、あなたが望むものです。YAML::Node命令を無効にして、いずれにしろキーを分類するために、SortKeysを2にセットしてください。
404デフォルトの名無しさん:2011/03/31(木) 12:00:43.82
use YAML;
use YAML::Node;
use Data::Dumper;
my $y=new YAML;
$YAML::UseHeader=0;
$YAML::SortKeys=2;
my $y={
data=>[
{rule=>10,
name=>20,
},
],
};
YAML::DumpFile("k.yml",$y);
ってやったんですが
data:
- name: 20
rule: 10
って表示されます

- ruleを先に持ってきたいんですが アルファベット純になってしまいます
どうすればいいんでしょうか? ハッシュ宣言の順番のまま使いタイんですが
たすけてください
405デフォルトの名無しさん:2011/03/31(木) 13:22:52.11
順番邪無くても平気でした
406デフォルトの名無しさん:2011/03/31(木) 14:04:32.84
なんかイライラするなその誤変換ほったらかし
こういう誤変換が平気な人は普段からコーディングミスも多そうな気がするが偏見かね
407デフォルトの名無しさん:2011/03/31(木) 14:24:07.36
だってぼくはは怠慢だから
408デフォルトの名無しさん:2011/03/31(木) 14:50:17.24
$hoge = scalar ref $self
のscalarって何のためにあるんでしょうか
409デフォルトの名無しさん:2011/03/31(木) 15:39:48.60
組み込み関数のrefはコンテキストで振る舞いが変化するようなことはなく
文字列しか返さないから何の意味もないと思うぞ。

410デフォルトの名無しさん:2011/03/31(木) 16:35:37.83
>>404
use YAML;
use YAML::Node;

my $hash_node = sub {
my $node = YAML::Node->new({});
%{$node} = @_;
return $node;
};

my $y = YAML->new;
my $y = {
data => [
$hash_node->(
rule => 10,
name => 20,
),
],
};
YAML::DumpFile("k.yml", $y);

Perlのハッシュは順序がないから、それをどうするか。
411デフォルトの名無しさん:2011/03/31(木) 17:32:31.74
もうそろそろ、これから書くものに関しては全部 use utf8; を付けようかと考えているんですが、

cgi だったり、貧弱なサーバもまだまだ多いのでパフォーマンスが気になるんですが経験済みの方いませんか?

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
binmode STDOUT => ':utf8';
use open IO => ':utf8';
412デフォルトの名無しさん:2011/03/31(木) 19:00:59.74
>>409
ありがとうございます
413デフォルトの名無しさん:2011/03/31(木) 19:33:56.99
いwwwwwまwwwさらuse utf8にかえようとかわめいてんのかよww
なに?ウインドウズでやってるの?
414デフォルトの名無しさん:2011/03/31(木) 19:40:01.05
お、なんか汚ならしい草がいっぱい生えてんな
415デフォルトの名無しさん:2011/03/31(木) 19:40:28.15
>>413
どんだけド素人やねんおまえはw
416411:2011/03/31(木) 19:58:54.12
今更って、もう既に最初っから use utf8; するのが主流?

俺はまだ必要な場合と箇所にだけ使用してるんだけど・・。
417デフォルトの名無しさん:2011/03/31(木) 20:34:37.34
ドシロウトウズ
418デフォルトの名無しさん:2011/03/31(木) 21:30:20.22
ドシロウトじゃねえよはげ

utf8が主流だからwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwww
use utf8;つけないとダメだろwwwwwwwwwwwwww
あとuse strict; use warnings;
419デフォルトの名無しさん:2011/03/31(木) 21:36:57.91
perlはウインドウズにむいてねえよw
Linuxつかえ
文字コードめんどくさいから 色々めんどくさいウインドウズ 手間がかかる

420デフォルトの名無しさん:2011/03/31(木) 21:43:29.09
windows は ウインドウズ って書くのに Linux は リナツクス って書かないんですね。

ウィンドウズ
ウインドウズ
421デフォルトの名無しさん:2011/03/31(木) 21:55:03.63
>>418
おまえは use w; も付けなきゃダメだろ
422デフォルトの名無しさん:2011/03/31(木) 21:56:41.06
そんなのあんのか?
ネタなのか本当なのかわからないな

423デフォルトの名無しさん:2011/03/31(木) 21:57:17.29
Acme::W

あったし・・・
424デフォルトの名無しさん:2011/03/31(木) 22:34:58.06
use utf8 すると色々面倒くさいから俺は外したよ
425デフォルトの名無しさん:2011/04/01(金) 09:57:56.74
面倒くさいっていうのは例えば?
426デフォルトの名無しさん:2011/04/01(金) 11:05:59.78
ここのサーバーで廃人プレイヤーMiyagawaを単騎で倒した方はいますか?
レベル45Perler ステ振りは、モダン特化です
427デフォルトの名無しさん:2011/04/01(金) 11:29:35.59
LWP の挙動が変わるところとか
428デフォルトの名無しさん:2011/04/01(金) 11:33:08.05
かわらねえよwwwwwwwwwwwwww
wwwwwwwww
wwwwwwwwwwwwwwwwwwwwww
wwwwwwww

つりかwwwwwww
わろすwwwwwww
429デフォルトの名無しさん:2011/04/01(金) 11:46:43.81
utf8にすると、使うメソッドが変わることがあって面倒。
別クラスにしてくれって思うことがある。
バイナリで扱うのが楽といえば楽だ。
430デフォルトの名無しさん:2011/04/01(金) 12:09:27.46
CPANにアップしてるやつばか?
なんかさ
ばかじゃねえの?ドキュメントだけ(笑)
視覚的なものが無いよね
SYNOPSだけ
リンク先とかはって 見本とかみせろよ
こう表示されるとかスクリーンショットとかわかりずれえんだよ
そんな説明文だけのやつ使うきにならん
431デフォルトの名無しさん:2011/04/01(金) 12:09:57.89
これ↓だと、うまくいくけど、

my %h = map { "pre_" . $_ => 1 } qw(a b);

こう↓するとエラーになるのは何故でしょうか?

my %h = map { "pre_$_" => 1 } qw(a b);
432デフォルトの名無しさん:2011/04/01(金) 12:54:05.59
>>431
http://perldoc.jp/docs/perl/5.10.1/perlfunc.pod
> { はハッシュリファレンスとブロックの両方の開始文字なので、
> map { ... は map BLOCK LIST の場合と map EXPR, LIST の場合があります。
> perl は終了文字の } を先読みしないので、{ の直後の文字を見て
> どちらとして扱うかを推測します。 通常この推測は正しいですが、もし間違った場合は、
> } まで読み込んで カンマが足りない(または多い)ことがわかるまで、
> 何かがおかしいことに 気付きません。 } の近くで文法エラーが出ますが、
> perl を助けるために単項の + を 使うというように、{ の近くの何かを変更する必要があります。

> %hash = map { "\L$_", 1 } @array # perl guesses EXPR. wrong
> %hash = map { +"\L$_", 1 } @array # perl guesses BLOCK. right
433デフォルトの名無しさん:2011/04/01(金) 15:00:30.11
質問者じゃないけど、、、

勉強になった。map EXPR, LIST って書き方を知らないけど。
434デフォルトの名無しさん:2011/04/01(金) 15:35:42.16
>>432
質問者です。
d
435デフォルトの名無しさん:2011/04/01(金) 16:20:08.70
>>428
それが残念変わるんだなぁ
436デフォルトの名無しさん:2011/04/01(金) 17:44:56.10
>>432
直後の文字が何の時にどっちで解釈されるのかいまいちよくわかんないのだが。

例で

EXPR: "
BLOCK: + ( lc

というのはわかったけど、書いてみてエラーになったら直すしかないんかね?

437デフォルトの名無しさん:2011/04/01(金) 17:54:13.40
Catalystで
http://localhost/appと
http://localhost/app/
でアクセスあせると
2番目の奴はちゃんとテンプレートとcssとかjs表示されんだけど
1番目だとjsとcssと画像が表示されねえwwテンプレートは表示される
/root/hello/ ↓
index.tt
img/->画像
css->css
js->js
438デフォルトの名無しさん:2011/04/01(金) 18:18:40.46
>>436
ブロックの中身が単純すぎるせいで { がハッシュリファレンスの開始と捉えられている。
%hash = map { key => 'value' } @array のような変換は
%hash = map +(key => 'value'), @array でいいし、map BLOCK より map EXPR の方が速い。
439デフォルトの名無しさん:2011/04/01(金) 23:18:55.08
こんな書き方もあるのか!
440デフォルトの名無しさん:2011/04/02(土) 09:29:22.95
実際の呼び出し前に、サブルーチンの定義を記述するのと、
プロトタイプのみ宣言しておいて、後で中身を定義するのって、等価だよね?
441デフォルトの名無しさん:2011/04/03(日) 19:03:37.12
use utf8 環境での日本語等の文字列リテラル には utf8フラグ が付くと思いますが、
$! の文字列には付かないのでしょうか?
手動で decode する以外に自動で付ける方法はないでしょうか?

以下のような感じの場合です。(※ LANG=ja_JP.UTF-8 で)

#!/usr/bin/perl -w
use strict;
use utf8;
binmode STDOUT => ':utf8';
binmode STDERR => ':utf8';

open(my $fh, '/dev/null');
print "★エラー = $!";
442デフォルトの名無しさん:2011/04/03(日) 19:28:09.04
use strict;
use utf8;
use Encode;

open my $fh, '/dev/null' or die encode('utf8', "エラー "), $!;

とか? (うちの環境で$!は日本語を吐かないので$!部分は未検証)
443デフォルトの名無しさん:2011/04/03(日) 19:31:48.18
リテラルではないから付かないほうが自然ではあるけどねえ
444デフォルトの名無しさん:2011/04/03(日) 19:31:55.89
早まった。うちでは>>441で何も問題なく表示されるや。($!は当然英語のまま)
445デフォルトの名無しさん:2011/04/03(日) 20:35:27.24
>>442
ありがとうございます。参考にします。

>>443
そうですね・・。これリテラルじゃないや。
446デフォルトの名無しさん:2011/04/03(日) 20:59:27.43
ファイルへの入出力はレイヤでだいぶすっきり書けるけど
ファイル名とかコマンドライン引数とかはいちいち
encode書くのがだるい。なんかいい方法ないのかな。
447Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/04/03(日) 22:52:59.37
ういんどうずなんですか?

それじゃたいへんですよ

あきらめてください
448Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/04/03(日) 22:54:11.29
あきらめたらそこで試合終了ってえらいひとがいってました
449Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/04/03(日) 23:01:06.57
今日のCPANモジュールの本

CPANモジュールガイド

ただいま予約受付中です。

だからかわない
じゃあね 買えるURL教えろ
450デフォルトの名無しさん:2011/04/04(月) 11:12:20.34
local::lib ってよく見聞きするんですが、なにがイイんですか?
451デフォルトの名無しさん:2011/04/04(月) 14:25:52.56
>>450
root権限でインストールされてるPerlでも、
ユーザ権限で自分の環境にCPANモジュールをインストールできるところ。
452デフォルトの名無しさん:2011/04/05(火) 13:37:51.38
Macのmacportsで入れたperlだと
mobilecatが動かない
portsで何か余計なもの入るから?

全部perlのcpanツールで入れれば大丈夫なの?
453デフォルトの名無しさん:2011/04/06(水) 01:46:02.25
otsuneはPerlの糞文法に10年以上も苛まれ続けた結果、
あそこまで性格が悪くなってしまったという説を唱えるRubyエンジニアがいるのですが、
彼の言っていることは正しいのでしょうか

質の低い文法が一人の男の人生を狂わせ、
周囲の人間にまで多大な迷惑をかけてしまっているのだとしたら、
そんな悲劇を僕は直視することができません

otsuneがもしPerlよりも先にRubyに出会っていたとしたら、
彼の人生はもっと豊かになっていたのではないでしょうか
周囲の人間も迷惑を被る事は無かったのではないでしょうか
はてな村はもっと晴れやかで爽やかで前向きなコミュニティになっていたのではないでしょうか

そう考えると僕は胸が苦しくなる
夜眠れなくなる
454デフォルトの名無しさん:2011/04/06(水) 09:23:54.88
shtmlのフォームからcgi(perl)に変数を送り、別途置いてあるcsvデータから
該当する物を出力するものを作っているのですが
出力するときはhtmlなのですが、その際の拡張子は「.cgi?name=いろは」みたいになっています。

ところがサイトメニュー等も一緒に出力したいので、SSIも同時に使いたいのですが
拡張子がshtmlで無いとダメなサーバー仕様なので、検索結果出力の際の拡張子をshtmlにするには
どうしたら良いでしょうか?
455デフォルトの名無しさん:2011/04/06(水) 09:24:49.93
↑すみません、質問板を間違えました。板汚しすみません。
456デフォルトの名無しさん:2011/04/06(水) 18:23:58.58
#!/usr/bin/perl
use strict;
use warnings;
use Parse::AccessLogEntry;
my $p=new Parse::AccessLogEntry;
open my $line,"/var/log/apache2/access.log";
my $hash;
$hash=$p->parse($line);
close $line;

ってやると

Use of uninitialized value in split at /usr/local/share/perl/5.10.1/Parse/AccessLogEntry.pm line 28.

ってでるんですけど
どうすればいいですか?おしえてください
457デフォルトの名無しさん:2011/04/06(水) 19:01:16.57
Parse::AccessLogEntry って LogFormat が
決め打ちだからそれに合わせた LogFormat じゃないので
時間が入ってるはずの部分を split できずにエラー吐いてるのかな。

Parse::AccessLogEntry は50行程度なので自分が使ってる
LogFormat に合わせて修正して使えばいいのではなかろうか。

ちなみに自分でやるときは split か Text::CSV_XS でパースしてる。
458otsune:2011/04/06(水) 20:30:07.96
>>453
何か、2chに変なのが沸いてると聞いてきたんだが、オマエは何なんだ?
オレに言いたい事があるなら、ネットでの活動ネームなど添えるなりして書き込んでくれ
言っとくが性格が悪くなったことなんて一度もない勝手な風評を流すと罪に当たると言うのは知っているよな?
発言の語句からすると、akiyan臭いが用があるならchat.freenodenet #perl-casualまでどうぞ
459デフォルトの名無しさん:2011/04/06(水) 20:34:13.80
もちろん本物は淡々とヲチしてます
460otsune:2011/04/06(水) 20:35:39.79














!!!!!!!!!!!!!!!!!!!!!
461デフォルトの名無しさん:2011/04/06(水) 20:38:21.44
2chの偽がオモシロすぎる 約1分前 Twittperatorから
462デフォルトの名無しさん:2011/04/06(水) 21:00:29.08
性格悪くなんてなってないよな別に
元からだもんな
463デフォルトの名無しさん:2011/04/06(水) 21:43:20.13
462=内部人間

内部の事情をしってるやつ
464デフォルトの名無しさん:2011/04/06(水) 21:47:21.88
内部人間あらわるあらわるー
465デフォルトの名無しさん:2011/04/06(水) 21:51:55.55
誰?
誰が書き込んでんだよ!!!!!!!!!!!!
466デフォルトの名無しさん:2011/04/06(水) 22:01:47.55
>>あそこまで性格が悪くなってしまったという説を唱えるRubyエンジニアがいるのですが、
Rubyエンジニアってだれだよ
467デフォルトの名無しさん:2011/04/06(水) 22:05:22.25
LL事件簿みたいなの作れよハゲ

おもしろくて毎日みるよ
468デフォルトの名無しさん:2011/04/07(木) 00:16:23.02
んなそのへんのおばさんの会話みたいな話なんぞどうでもいい。
469デフォルトの名無しさん:2011/04/07(木) 07:26:01.36
技術の話だとついていけないから面白くないんだよ。察してやれよw
470デフォルトの名無しさん:2011/04/07(木) 17:40:59.13
ショッピングカート作ってるんだけど、
カゴに入れた商品を削除するにはどうしたらいい?

・・・ってこんな質問の仕方じゃアレかもしれんけどw
なにか思いついたレスお願いします。
471デフォルトの名無しさん:2011/04/07(木) 18:17:00.43
普通にdbから消せよ
472デフォルトの名無しさん:2011/04/07(木) 18:39:14.60
データベースから消すの?
それは違うんじゃない?
注文内容をひとつひとつデータベースには登録しないかと。

473デフォルトの名無しさん:2011/04/07(木) 18:49:32.56
サーバサイドで保存するサイトもユーザのクッキーだけに持たせとくサイトも両方あると思うが
474デフォルトの名無しさん:2011/04/07(木) 18:56:25.25
クッキー不使用のものを考えています。
サーバーサイドで保存ということは、カートに入れた情報を一時的にサーバーのファイルに保存するということ?
それだと、利用者の数だけファイルを作ることにはなりませんか?
今はフォームのhiddenで先のプログラムへ渡す手法を考えているのですが、一度カートに入れた商品を削除する機能で悩んでいまして、、、
475デフォルトの名無しさん:2011/04/07(木) 18:57:14.63
なんで1ユーザー=1DBなんだよ
476デフォルトの名無しさん:2011/04/07(木) 19:17:51.97
カート使用にデータベースは使わないかと。
使うとしたら商品一覧等のデータ格納くらいじゃないの?私はCSVファイルでやっているけど。
クッキーかhiddenで受け渡すか、サーバーで一時記録にファイルを使うのは上手くないかと。
477Perl忍者 ◆M5ZWRnXOj6 :2011/04/07(木) 19:29:33.22
セッションつかえよ
ファイルっていっても少しだろ?バカかハゲ
期限きれたら削除させればいいだろはげ

どうせお前みたいな2chに書き込んでるハゲが1ヶ月数万PVもとれねえだろ

なめてんのか?雑魚
478デフォルトの名無しさん:2011/04/07(木) 19:30:13.58
やっぱり、回答が神の一手ですね忍者さんは
479デフォルトの名無しさん:2011/04/07(木) 19:31:02.59
amazonとかはデータベースに保存してるみたいだけどなぁ
480デフォルトの名無しさん:2011/04/07(木) 19:31:04.78
自問自答乙
481デフォルトの名無しさん:2011/04/07(木) 19:37:49.72
>>477
セッションって?
カート使用でサーバーサイドでファイル作るの?
ちょっと重いと思うんだけど本気?確かにさしたる時間はかからないけど。
月だと3万PVくらいかな。
それでも売り上げは出てるよ。まだまだ少ないけど。
482デフォルトの名無しさん:2011/04/07(木) 19:39:58.59
>>479
売り上げの記録は当然記録してるでしょう。私もそうしている。
今言ってるのは、一度カートに入れた商品を取り消す作業をプログラムでどうやるか、だよ。
カートに入れられた複数の商品から指定商品だけを除外するにはどうしたらいいか。
483デフォルトの名無しさん:2011/04/07(木) 20:04:49.21
カート内みたいな一時的なデータもセッションIDと紐付けしてDBに保存なんじゃないの?
hiddenなんかにしまったりした日にゃブラウザの履歴いったりきたりで矛盾が生じて
ロクなことにならんぞよ
CSVファイルだのに保存していちいち読み書きしてたらオーバーヘッドで鬱陶しいから
DB使うんじゃないの?
まあオレはDBなんて使ったことないけどさ〜使う機会いままでなかったんで
484デフォルトの名無しさん:2011/04/07(木) 20:10:16.80
>>482
お前にDBは無理
485デフォルトの名無しさん:2011/04/07(木) 20:25:56.46
hiddenで状態遷移を次へ渡すなんてのは十数年前の初心者の頃に俺も書いたことあったっけな。懐かしい。
「ブラウザの「戻る」ボタンは使わないでください」って全ページ冒頭に注意書きを表示してな。
当時はDBもバカ高い商用DBしか選択肢がなくて、データの保存は都度ローカルファイルへ書き出し。
お客さんが滅多に来なかったからそれでもなんとかなってたっけ。
>>482は十数年くらい前の時代からタイムスリップしてきた俺かもしれない。
486デフォルトの名無しさん:2011/04/07(木) 20:37:53.52
>>485
今それを真剣にやってるところなんだよw
今の最先端のやり方はどういうやり方なの?
487デフォルトの名無しさん:2011/04/07(木) 20:54:31.50
>>485
ちょとまて?おかしくないか?
今、書店で売ってるPerlCGIの書籍でも紹介されてるくらいだと思うけどなあ。
それに、ECサイトのカートでPerl使ってるとこは多いだろうし、
だとすると作り方にそう多くの手法選択肢もないわけで、
hiddenが10年前の手法とかっていうのも違和感あるなあ。

今の最先端カートはどういう手法を使ってるの?
488デフォルトの名無しさん:2011/04/07(木) 20:56:17.13
ブラウザのcookieにはユニークなセッションIDのみ保存する
セッションIDはユーザや買い物に関する情報は入れずに
ただセッションを区別するためだけのものとする
容易に類推されたりしないよう作成すること
このセッションIDとユーザ固有IDなどはサーバ側で必要に応じて(セッションの都度)紐付けする
買い物情報やユーザ情報は変更・遷移も全てサーバ側のDBに格納する
て感じ?
識者の補足訂正を乞う
489デフォルトの名無しさん:2011/04/07(木) 20:59:44.98
Archive::Extract なり Archive::Zip を使って
中身が文字列の zipファイル を展開して
展開された文字列をファイルを作らないで
そのままスカラー変数に放り込みたいのですけども
どうしたらいいのでしょうか?
490デフォルトの名無しさん:2011/04/07(木) 21:17:06.31
文字列のzipファイルてのは初耳だ
491489:2011/04/07(木) 21:34:58.35
>>490
言葉が足りず申し訳ありません
ひとつのテキストファイルを zip に圧縮したものを
展開してそのままスカラー変数へ放り込みたいのです
492デフォルトの名無しさん:2011/04/07(木) 21:36:19.83
Perl/CGIなんていう名で出てる書籍はたとえ2010年出版でも内容は2000年以前なんだろうなと想像する
493デフォルトの名無しさん:2011/04/07(木) 22:05:00.09
まあ、Perl/CGIに限定するならそんなに変わってないだろうしな。
サブタイトルとかで列挙されてる分には分からんが。
494デフォルトの名無しさん:2011/04/07(木) 22:23:52.62
最新のカートCGIではどんな技術が使われてるの?
495デフォルトの名無しさん:2011/04/07(木) 22:51:15.15
できた・・・
どうやら、一度カートに入れた商品の指定商品だけを削除することができた。。。
hidden使用です。クッキー使用可にしていないブラウザ使ってる人ってどれくらいいるんだろう?
考えなくてもいいくらいに微々たるものだったらあれだけど、
とにかく、クッキー使えないブラウザでも利用できるカートにしたかったのね。
とりあえずできた。まあ、ちょっと心配あるけど。
これからは必要事項記入して全てのデータをメールで顧客と店舗に送る機能の作成に入ります。
496デフォルトの名無しさん:2011/04/07(木) 22:58:10.30
それと、ちょっとスレチかも知れないけど、perlのカートつながりで、
SSLって使わないとどういうことが起きるのでしょう?
盗聴されるっていうけど、そんなことがどうしてできるん?
497デフォルトの名無しさん:2011/04/07(木) 23:07:34.30
> SSLって使わないとどういうことが起きるのでしょう?
> 盗聴されるっていうけど、そんなことがどうしてできるん?
うわ〜
そんな程度の知識レベルでカートの仕掛けなんか作ってんのか〜
コワイわ〜

ていうか完全にスレチだな
498デフォルトの名無しさん:2011/04/07(木) 23:30:25.48
>>497
教えてもらえませんか?
499デフォルトの名無しさん:2011/04/07(木) 23:50:47.00
>>489
一時ファイルを使えない理由でもあんの?File::Tempとかもあるだろうに。
500 忍法帖【Lv=1,xxxP】 :2011/04/08(金) 00:28:52.05
>>489
use Archive::Zip qw(:ERROR_CODES);

my $zip = Archive::Zip->new();
($zip->read('foo.zip') == AZ_OK) or die 'read error';
my $contents = (
$zip->numberOfMembers > 0 ?
$zip->contents(($zip->members)[0]) :
''
);
print $contents;

適当にでっちあげてみた。
501489:2011/04/08(金) 01:06:48.66
>>500
ありがとうございます。無事に出来ました。
contents で members の中身のどれかを伸長したデータにアクセス出来たんですね。
Archive::Zip を改めて perldoc してみるとちゃんと書いてありますね…orz
502デフォルトの名無しさん:2011/04/08(金) 01:35:48.47
>>498
「SSL」で グ グ れ 。
503デフォルトの名無しさん:2011/04/08(金) 08:10:35.85
>>502
今北産業で
504デフォルトの名無しさん:2011/04/08(金) 08:25:56.25
インターネットがバケツリレーだから。
505デフォルトの名無しさん:2011/04/08(金) 13:21:15.25
foreach(sort {@{$host{$b}}<=>@{$host{$a}}} keys %host);

これをTemplate Toolkitで使いたいのですがよくわかりません
データを読み込んでいます

[% FOREACH item=yml.values.nsort%]

でもできないし助けてください


[xx,xxx,xx]3
[xx,xx]2
[xx,xx,xx,xx,xx]5
[xx]1

これを5,3,2,1とやりたいんです リストをスカラコンテキストで評価してソートさせたいんですが
Template Toolkitの場合はどうやればいいんでしょう?nsortだとできませんでした
506デフォルトの名無しさん:2011/04/08(金) 13:28:22.97
自分でそういうソートするvmethod定義するか
[% PERL %]つかってごりごりやるかじゃないかなぁ。
507デフォルトの名無しさん:2011/04/08(金) 13:34:51.89
[% PERL %]っていうやつはじめてしりましたよやってみます
508デフォルトの名無しさん:2011/04/08(金) 14:02:21.96
[% PERL %]
my $host=$stash->{yml};
print "$_: ",scalar @{$host->{$_}},"<br>" foreach(sort {@{$host->{$b}}<=>@{$host->{$a}}} keys %$host);

[% END %]

できました ありがとうございました
509デフォルトの名無しさん:2011/04/08(金) 16:04:40.18
>>503
HTTPはハガキ。配達段階で内容は丸見え。
HTTPS(SSL)は封書。配達段階で内容を盗み見るのはかなり困難。
なおSSLの証明書の種類によってはこれに加えて発信者の身元証明も兼ねる。
510デフォルトの名無しさん:2011/04/08(金) 16:53:39.75
>>509
素晴らしい!^^
でも、はがきや手紙の場合はわかるけど、
ネットの場合は盗聴するなんて想像もつかない。
どういう方法で盗みみるの?
511509:2011/04/08(金) 17:01:16.33
>>510
自分で調べろ。ググれ。もしくは自分で該当スレでも探せ。もしくは痛い目にあってからでないとわからないんならとっとと痛い目にあえ。
スレチなのでこの話はここまで。
512デフォルトの名無しさん:2011/04/08(金) 18:33:04.09
>>494の件
やっぱりおかしいよ、>>485は。
十数年前のやり方だからどうだと?古いといいたいんだろうけど、今も多くのカートCGIで現役では?
513Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/08(金) 19:40:21.99
hidden使うってどういういみ?
意味分からない
教えてください
514Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/08(金) 19:42:50.00
最近低レベルな事が分かりません

高レベルなことやりすぎてるので
515デフォルトの名無しさん:2011/04/08(金) 20:11:40.09
cookie 受け取れない端末のために、セッション ID を URI に含めなきゃいけないのが面倒くさい
516デフォルトの名無しさん:2011/04/08(金) 20:43:05.49
hiddenを使うこと自体は方法として当然ありだろうさ。
そこにセッションIDではなく状態遷移情報そのものを埋め込むのが手法としてダメだつってるの。
517デフォルトの名無しさん:2011/04/08(金) 21:39:57.41
>>501
zipファイルに圧縮されているファイルが一つだけだと事前に分かっているなら

use IO::Uncompress::Unzip qw/$UnzipError/;

my $z = IO::Uncompress::Unzip->new('foo.zip') or die "unzip failed: $UnzipError\n";
$z->read(my $buffer);
print $buffer;

でも良いかもね
518デフォルトの名無しさん:2011/04/08(金) 23:07:55.64
Spreadsheet::ParseExcelでB1セルのセルの色を知りたいです。

$cell = $sheet->{Cells}[0][1];
$color = $cell->{'Format'}->{'Fill'}[1]
で得られましたが、もうちょっと見た目きれいに取得する方法はありますか?
519デフォルトの名無しさん:2011/04/08(金) 23:37:14.09
>>518
等幅の綺麗なフォントで
$cell = $sheet -> { 'Cells' } -> [ 00 ] -> [ 1 ];
$color = $cell -> { 'Format' } -> { 'Fill' } -> [ 1 ];
520デフォルトの名無しさん:2011/04/08(金) 23:40:44.52
わあ、きれい!
521デフォルトの名無しさん:2011/04/09(土) 00:29:58.41
522デフォルトの名無しさん:2011/04/09(土) 12:25:57.17
みんな、アプリケーションの開発はどんな風にやってますか?
やっぱり、一行なら一行足してみて動作確認て感じでちょっとずつちょっとずつやってますか?
523Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/09(土) 12:42:55.51
あたりめーだろはげ
どばってやりたくないからなエラーのショックとかがでかいから
524デフォルトの名無しさん:2011/04/09(土) 13:46:15.49
よかったw 自分のやり方が特異でなくてよかった。
忍者殿も一行ずつテストしながら進めてるんだね?
けど、そのやり方だとあまり大きなプログラムは作れないのでは?
525Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/09(土) 15:06:22.79
まだ大きなプログラム作る必要が無い
小回りの効く暗殺タイプだからおれは
526デフォルトの名無しさん:2011/04/09(土) 16:23:40.90
あら。
これは意外。
ってことは、今のところさほど大きなプログラムは作ったことないの?
527デフォルトの名無しさん:2011/04/09(土) 16:28:18.47
今はテスト駆動開発だろJK
俺はやったことないけどな
528Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/09(土) 16:37:44.19
PHPをバカにするために僕もPHPはじめますね

比較対象する言語を一つくらい持ってないとPerlと他の言語のよさが見えてきませんからね

529デフォルトの名無しさん:2011/04/09(土) 17:10:39.11
他のプロセスのメモリ覗いたり弄ったり出来るモジュールありますか
530デフォルトの名無しさん:2011/04/10(日) 01:34:36.82
バッチファイルに放り込まれたファイルの
パスを拡張子だけ抜いて指定場所に書き込みたいのですが、
\の処理がうまくいきません どう記述するのが正しいのでしょうか?
perl -Mencoding=cp932 -pe s/"Filedpn"/"%~d1\%~p1\%~n1"/ template.avs > "%~n1.avs"
531デフォルトの名無しさん:2011/04/10(日) 02:48:39.65
>>530
【.cmd】 バッチファイルスクリプト %7 【.bat】
http://hibari.2ch.net/test/read.cgi/tech/1298873550/
532489:2011/04/10(日) 09:06:15.84
>>500 >>517
教えていただいてありがとうございます。
お蔭様でこんな風に書けました。

ぽちたて 0.1.4
http://pochi.usamimi.info/perl/pochitate01.html
533デフォルトの名無しさん:2011/04/10(日) 10:58:02.45
>>531
ありがとうございます
そちらで聞いてみます
534はげくん:2011/04/10(日) 13:46:33.18
>amachang 今粛々と民事刑事の方面で進めています。一応、すべて証拠として保存しなければいけないので、冗談でも今はこのスレに変なこと書き込まないでください。
>2011/01/28


http://hibari.2ch.net/test/read.cgi/prog/1291518728/

>1 :amachang撲滅振興協議会:2010/12/05(日) 12:12:08
> amachangが憎い・・・・amachangが許せない・・・・

> ククク・・・・クククククク・・・・・
> クックックックックックックッ・・・・・
> クー、クー、クー、クー、クー、クー・・・・・
>
> もう許せない。
> もはや沸き上がる滅意を抑えることが出来ない!!!
535デフォルトの名無しさん:2011/04/13(水) 03:50:17.02
>>513
おまい…
基礎からやりなおせよw

>>515
ケータイとかでは必須だよな。
サーバーサイドに一時的に記録して
万が一戻って実行してもエラーが出ないように対策するのが面倒だよな。


>>522
過去に自作したプログラムをサブル−チン化させているので
組み合わせながら自作してるよ。

>>523
それなりに痛い目にあってるんですな〜w
536デフォルトの名無しさん:2011/04/13(水) 09:12:26.45
>>535
セッションIDってパラメータのことね?
?の後に○=○&○=○&○=○って続ける値のことね?

サブルーチン化、なるほどね。
ひょっとして別ファイルにして読み込んで使うこともしてる?
あれって最後の . を忘れただけで動かないんだよなw

537Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/13(水) 09:32:49.64
>>535
hiddenのどこが基礎なの?
おい言ってみろよ

バカにしてんのか?
hiddenなんて低レベルなことやったことねえんだが?
だいたい説明してみろよ
hiddenっていうやつをよ セッションで管理とDBで管理してるからな俺は

セッションIDってパラメーター(笑)
お前釣りなの?
クッキーとして保存されてんだろバカかアホ

?○=○&○=○&○=○がパラメータだろ

セションIDはほぼハッシュ化されてんだが?わかる?低能
538デフォルトの名無しさん:2011/04/13(水) 09:42:44.66
ウェブアプリケーションを
作っちゃいけないレベルの知識の人が
作ってちゃってるのはオソロシイね

そもそもこのスレでは
ウェブアプリケーションプログラミング関係は
スレ違いでないの?
539デフォルトの名無しさん:2011/04/13(水) 10:05:46.83
>>537
hiddenはperlどころか、htmlであり、
htmlはperlより先に勉強するでしょやっぱり。
「基礎」という考え方もわからなくはないよ。

>やったことない
それもまた・・・

それと、なにをそんなにムキになってんだ?
午前中から。
よほど追い込まれてるかな。
540Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/13(水) 12:13:04.00
注文フォーム(かご) 『かごに入れる』方式の注文CGIです。
ここではかごに入れる部分だけの処理を載せています。かごに入れるという仕組みは、hiddenパラメータを使います。hiddenはもう何回か出てきましたね、CGIではクリックするたびに、それまでのデータは消えてしまいますから、
hiddenを使ってリレーのようにデータを渡して行きます。

お前も低レベルなことやってんだな・・・

こんなゴミみたいなことやってないが
お前も低レベルな初心者なんだろうな

ただパラメータを引き継がせてるだけだろハゲ
541Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/13(水) 12:14:06.08
買い物カゴの処理をきいてる時点で雑魚

スレ違いだから死ねよ
542デフォルトの名無しさん:2011/04/13(水) 12:58:30.41
>セションIDはほぼハッシュ化されてんだが?わかる?低能
運悪くセッションIDが衝突したら
他の人が買った商品を自分が買ったことにされるんですね、わかります
543デフォルトの名無しさん:2011/04/13(水) 13:41:46.01
まともな生成法のセッションIDが衝突するのよりは明日地球に隕石が衝突する可能性のほうがまだ高そうだが
544Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/13(水) 13:42:34.73
バカは放置
545デフォルトの名無しさん:2011/04/13(水) 13:48:22.30
>>540
最新のカートではどうやってるんだい?
perlでやってるならスレ違いではない。
546デフォルトの名無しさん:2011/04/13(水) 13:57:42.35
>>545

>>1
>CGI についての質問は板違いです。WEB プログラミング板でどうぞ。

頼むからテンプレぐらい読んでくれよ
547デフォルトの名無しさん:2011/04/13(水) 15:32:44.15
perl+CGIの質問は板・スレ的にこっちだな。誘導。
http://hibari.2ch.net/test/read.cgi/php/1295170172/
548デフォルトの名無しさん:2011/04/13(水) 16:16:20.38
http://rakudo.org/
鳥居のロゴの意味がわからん。
549デフォルトの名無しさん:2011/04/13(水) 16:17:02.20
PerlでHTMLファイルを処理すること自体は、この板でも特に問題ないってのが
また分かりにくいんだろうなあ
550デフォルトの名無しさん:2011/04/13(水) 16:29:07.42
なんで糞コテってバカのくせに偉そうなの?
551デフォルトの名無しさん:2011/04/13(水) 17:05:56.30
馬鹿だから
552デフォルトの名無しさん:2011/04/13(水) 21:09:39.86
一応は4コマの歴史が変わったエポックメーキングな作品であるのに、
影響受けるのが怖くてあずまんが大王が読めない、とかわざわざあとがきでアピールするのは確かに
ちょっとヤラシイかな、とは思う。
553デフォルトの名無しさん:2011/04/13(水) 22:10:25.33
誤爆にも程があるだろうw
554デフォルトの名無しさん:2011/04/14(木) 00:02:29.17
そこを何とかPerlに繋げるんだ
555デフォルトの名無しさん:2011/04/14(木) 00:20:21.93
あさぎ「よつばちゃん、ぱーるはもうオワコンなのよ」

最近遅ればせながらRuby試し出したけど、結構いいねこれ。特にブロック。
学習曲線としてはPerl知っているならすぐ覚えられるので楽だからみんなも使ってみればいいのに。
楽道とかわけわかんない方向にまで付き合ってもきっと後がないよ。
556デフォルトの名無しさん:2011/04/14(木) 02:19:26.34
セミコロンで終わらない言語はクソ
                以上!
557デフォルトの名無しさん:2011/04/14(木) 02:29:21.20
そもそもあずまんが大王ですらない;
それはよつばとだ;
558デフォルトの名無しさん:2011/04/14(木) 03:33:05.75
いいかよつば:
俺はセミを捕らせたらプロ級だぜ:
略してセミプロだ:
559デフォルトの名無しさん:2011/04/14(木) 03:37:34.92
それはセミコロンですらない、コロンだ。
560デフォルトの名無しさん:2011/04/14(木) 03:41:19.85
すなわち、だるまさんだ。
561デフォルトの名無しさん:2011/04/14(木) 04:02:46.01
そなたは達磨大師では無いのか?
562デフォルトの名無しさん:2011/04/14(木) 05:17:52.03
だるまさんがコロンだ。
563デフォルトの名無しさん:2011/04/14(木) 22:55:08.35
>>562
ピコワロス(´,_ゝ`)
564デフォルトの名無しさん:2011/04/15(金) 06:02:36.80
うさたん大王なのか
565デフォルトの名無しさん:2011/04/15(金) 13:24:30.59
$str = 'ABCABCABC';
・$str =~ s/AB//; →CABCABC
・$str =~ s/AB//g; →CCC
はいいけど'ABCABCC'にしたいときはどうすると簡単?
オプションにもなさそうだし・・・
文字列の後方から一致文字列を一つ置換したい。
566デフォルトの名無しさん:2011/04/15(金) 13:41:27.83
"$str = 'ABCABCABC';
$str =~ s/(.*)AB/$1/;
print $str; #ABCABCC
567デフォルトの名無しさん:2011/04/15(金) 13:42:42.91
d!!!!
568デフォルトの名無しさん:2011/04/15(金) 13:52:14.70

無理だ・・・
実際には複雑で下みたいな感じなんだよね。
$siftstr =~ s/(<th.*?)tb_day(.*?)$print(.*?th>?)/$1tb_day_ex$2$print$3/;
↓変えてみた
$siftstr =~ s/(.*)(<th.*?)tb_day(.*?)$print(.*?th>?)/$2tb_day_ex$3$print$4/;

なんかもうよけいに変になった・・・
569デフォルトの名無しさん:2011/04/15(金) 18:54:32.13
>>568
$siftstr =~ s/(.*<th.*?)tb_day(.*?)$print(.*?th>?)/$1tb_day_ex$2$print$3/;
未検証。
ていうか「(.*?th>?)」は「(.*?th>)」じゃないの? まあどっちでもマッチするっちゃするだろうけど。
570デフォルトの名無しさん:2011/04/16(土) 07:43:57.28
あるcpanモジュールをインストールするのにコンパイルが必要か
それとも.pmだけコピーすれば動くのか、どこ見ればわかりますか?
571デフォルトの名無しさん:2011/04/16(土) 07:48:09.90
>>570
そのモジュールのソース
モジュール名の最後が PP (Pure Perl) ならコピーだけで動く可能性が高い
572デフォルトの名無しさん:2011/04/17(日) 00:34:11.05
>>570
Perl忍者モジュールでおk
573デフォルトの名無しさん:2011/04/17(日) 00:47:22.48
パイオリン忍者って結構好き
ttp://www.youtube.com/watch?v=Pdk3k02Fbjo
574デフォルトの名無しさん:2011/04/17(日) 14:03:07.30
>>571 ありがとうございます。
>>572 ちょっとよくわかりません…
575デフォルトの名無しさん:2011/04/18(月) 15:45:20.30
pythonのnumpyに相当するような
逆行列とか固有値分解とかしてくれるモジュールないですか
576デフォルトの名無しさん:2011/04/18(月) 15:50:36.14
flockを使った排他ファイル制御を簡単化してくれるモジュールないですか
データベースとか使いたくないんです
577デフォルトの名無しさん:2011/04/18(月) 17:28:47.51
糞malaは最近XSSとか馬鹿の一つ覚えのようにわめいているが
いつからセキュオタになったの?きもいなあ
578デフォルトの名無しさん:2011/04/18(月) 17:36:20.65
何できもいの?
579デフォルトの名無しさん:2011/04/18(月) 17:41:14.68
mala忍者はセキュオタになってもセキュオタに勝てないからきもいの

おとなしくPerlでもやっとけよもじゃもじゃ
580デフォルトの名無しさん:2011/04/18(月) 17:52:28.87
malaってあいつ逆立ちしたらチン○なんだろ?

髪の毛がチン○ 髪の毛から足がチン○

そういうことか だからもじゃもじゃ髪の毛のばしてるのね
581デフォルトの名無しさん:2011/04/18(月) 17:56:18.59
malaの由来=男性器

髪の毛から上がチン○ 髪の毛がチン○
582 忍法帖【Lv=8,xxxP】 :2011/04/18(月) 17:57:54.67
>>575
PDLとか言うのがあるらしい。
http://pdl.perl.org/

>>576
何が面倒か分からん。
583デフォルトの名無しさん:2011/04/18(月) 18:15:57.96
flockとかだるいからDBに行くんだよな。慣れると楽ちん
584デフォルトの名無しさん:2011/04/18(月) 19:45:13.14
おれもそう思う。
585Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/18(月) 20:23:40.52
flockなんて使うのか?くそそうだな
586デフォルトの名無しさん:2011/04/18(月) 23:41:05.96
Perlモジュールのインストールが上手くいかないので教えてください。
makeで読んでいるコマンドが子供を探せてないぽいです。

現象:親モジュールのmake test時に子モジュールが見つからずFatal Error終了。
詳細:
・solaris 9
・CPANではなく、PREFIXでローカルにインストール
・子モジュールはインストール済み(use XXX::YYY でエラーなし)
・PERL5LIBは設定済み
587デフォルトの名無しさん:2011/04/19(火) 02:11:23.13
RootユーザだとDBDのODBCモジュールを使えるんですが、一般ユーザだと
/path/to/libodbc.a をロードできないといわれて動きません。
Rootユーザがどこからlibodbc.aをロードしてるのかどうやれば分かりますか?
588デフォルトの名無しさん:2011/04/19(火) 03:26:39.15
rootは/usr/local/libからロードしてました。
一般ユーザは変なところから(自分のローカルディレクトリから)ロードしてて、なにか失敗してるし。。。
。。。。。。。。
589デフォルトの名無しさん:2011/04/19(火) 03:40:31.41
こんなふうに配列にハッシュを代入してみたところ問題なく動いたのですが、こういう書き方はマズいのでしょうか?

@array{"test"} = "test";
print @array{"test"};
590デフォルトの名無しさん:2011/04/19(火) 04:00:39.79
>>589
それは配列に代入してるんじゃなくてハッシュのスライス。
何か考える前にstrictとwarnings有効にしとけ。

use strict; use warnings; use Data::Dumper;
my %hash;
@hash{"test1", "test2"} = ("A", "B"); # ok
my @keys = ("test3");
@hash{@keys} = ("C"); # ok
@hash{"test4"} = ("D"); # 警告
print Dumper \%hash;
# ↓結果
Scalar value @hash{"test4"} better written as $hash{"test4"} at - line 6.
$VAR1 = {
'test1' => 'A',
'test4' => 'D',
'test3' => 'C',
'test2' => 'B'
};
591デフォルトの名無しさん:2011/04/20(水) 12:38:35.56
CGI::APP
が素敵すぎる
Catalystなんて奴、使う奴の気がしれない
592デフォルトの名無しさん:2011/04/20(水) 13:50:37.88
そんな餌にひっかかると思ったんですか?バカチョンが
593デフォルトの名無しさん:2011/04/20(水) 14:36:16.97
テンプレ4のActivePerlでのWin32環境の奴は
エンコーディングをcp932でセットさせるより

use Win32::Unicode '-native'; # or Win32::Unicode::Native

を使わせたほうが初心者にはシンプルでとっつきやすいんじゃね?

いちいちopenするときにcp932でencodeしなきゃいけないのはバッドノウハウだし
そもそも、エンコーディングをcp932決め打ちだと
cp932以外の言語圏へのポータビリティーがなくて美しくない
594デフォルトの名無しさん:2011/04/20(水) 16:01:59.38
Mojolicious::Liteが流行じゃないの?
595デフォルトの名無しさん:2011/04/20(水) 18:03:26.56
$hoge =~ s/A-/TEMP/;
@hoge = split(/-/$hoge);
$hoge[0] =~ s/TEMP/A-/;

というようなことをしたいのですが、TEMPのところはどうするのが最適なんでしょうか?
$hogeの中には適当な文字列が入ってます。
596デフォルトの名無しさん:2011/04/20(水) 18:28:25.96
>>595
普通は実態参照とか使って文字列に入る可能性のある
文字はスプリットに使わないけどな。
ってか、gオプションが付いて無いところをみると
なんでもどうとでもいける気がするけど・・・

1、$hogeに入りえない文字。
2、パスワードみたいな適当な文字列。
3、正規表現を使って"A-"は置換しない。
597デフォルトの名無しさん:2011/04/20(水) 18:36:06.63
>>596
ありがとうございます。
2の方法で他の方がどんな文字を使ってるか、
もしくは一時的に置いとくための特殊な文字があるのか知りたかったのです。
598 忍法帖【Lv=10,xxxPT】 :2011/04/20(水) 18:50:29.52
>>593
面白いモジュールあるね。
win32限定で作るのなら、いいかも。

>>595
@hoge = split(/(?<!A)-/, $hoge);
これでダメなの?
599デフォルトの名無しさん:2011/04/20(水) 19:35:17.50
>>597
>一時的に置いとくための特殊な文字
特殊変数はあってもそんな文字は無い。
適当に英数字10文字選んでも天文学的な数でまず被らない。
ってか使いたい置換後の文字列を事前に検索チェックして
もし被っていたらハッシュでもかけて動的に変えればいいじゃないか。
ありえないけどまさかの無限ループにならないように一応回数の
上限決めてエラーの道も作っておけばよい。
600デフォルトの名無しさん:2011/04/20(水) 19:54:29.71
>>598>>599
ありがとうございます。
とりあえず正規表現で行くことにします。
検索するという発想はありませんでした。
601デフォルトの名無しさん:2011/04/20(水) 21:03:37.16
>>597
> 一時的に置いとくための特殊な文字があるのか知りたかったのです。

読み方も解らない、意味も解らない、出典も解らない漢字がJISコードにある
(従って、Unicodeにも含まれる)から、それを使えばいい。
「幽霊文字」でググってごらんよ。
602デフォルトの名無しさん:2011/04/20(水) 23:06:39.35
>>601
想像してたのと少し違いましたが、やっぱりあったんですね
勉強になりました
603デフォルトの名無しさん:2011/04/20(水) 23:38:19.45
え、幽霊文字って単に漢字分類の一区分であって文字コード的には普通の漢字とか他の文字と何ら違わないでしょ。
たとえば$hogeがユーザーが任意に入力できる文字列だとしたら、事前に払っておかない限り普通に入り得る。
「TEMP」とか使うのと変わらん。
604デフォルトの名無しさん:2011/04/20(水) 23:50:56.26
perlのプログラムをメモ帳で書いています。
文字コードはUnicodeにしたいですが、Ansi以外で保存してブラウザで実行するとInternal Server Errorと出てしまいます。
PerlはUnicodeでプログラムできないのでしょうか。
605デフォルトの名無しさん:2011/04/20(水) 23:53:58.82
HTMLで一つフォームを持ったページを作りました。文字コードはUnicodeです。
「パソコン」とフォームに記入し、別のCGIにフォームの内容を送信します。
受け取ったCGIで受け取った内容を見ると、「パソコン」ではなく%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3になってしまいます。
これを「パソコン」に戻す方法はありますでしょうか。なお、このCGIもUnicodeで書きたいです。
606デフォルトの名無しさん:2011/04/21(木) 00:12:19.13
URLデコードすれば戻せます。
なお、CGIの話はWEB プログラミング板でどうぞ。
607デフォルトの名無しさん:2011/04/21(木) 01:07:13.98
去年のYAPC::AsiaでJesseが今年の4月に
5.14だすよーって言ってたはずだけど何時出るんだろ?
詳細なリリーススケジュールを誰か教えて!!
608デフォルトの名無しさん:2011/04/21(木) 01:11:27.71
調べてないけどRC1が昨日出たらしいから割とすぐなんじゃないの?
609デフォルトの名無しさん:2011/04/21(木) 01:22:29.56
>>608
うおぉぉおぉー、サンキュー!!!
http://www.perlmonks.org/?node_id=900342

さっそくtarボール拾ってmakeしてくる!!
610デフォルトの名無しさん:2011/04/21(木) 13:33:45.03
>>603

なら、ここで「未使用」とされているコードを使えばいい。
http://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_0000-0FFF
611デフォルトの名無しさん:2011/04/21(木) 13:46:43.89
ユーザー入力(例えばクエリ送信)できるのか出来ないのかが問題。
未使用仕様関係なくコード入力されたらダメじゃん。
612デフォルトの名無しさん:2011/04/21(木) 15:00:44.46
my @ary = %hah;
でそのまま配列に変換できるけど、
これは両方とも中に入ってるのがリストだから、受け渡し可能なんでしょうか?
613デフォルトの名無しさん:2011/04/21(木) 15:19:17.22
>>611
そんなものは、事前にチェックして、
「不正な文字コードが含まれています」とエラーメッセージを出して終わればいい。
614デフォルトの名無しさん:2011/04/21(木) 15:51:41.82
>>613
ちょっと前のレスから読み返せよ。
恥ずかしい。
615デフォルトの名無しさん:2011/04/21(木) 16:03:28.83
>>612
ハッシュはキーと中身が隣同士に並んだ配列だからね。
616デフォルトの名無しさん:2011/04/21(木) 18:48:06.93
5.8使うのが一番無難なの?
617デフォルトの名無しさん:2011/04/21(木) 19:40:43.94
何か事情があって新しいのが入れられないという場合以外で今さら5.8を使う理由は思い付かないな
バージョン5.<偶数>.<整数> の範囲で一番新しいのを入れれば普通問題ない
618デフォルトの名無しさん:2011/04/21(木) 22:22:40.23
えっ 5.<偶数>.<小数> なんてバージョンもあるのか…
619デフォルトの名無しさん:2011/04/21(木) 22:27:31.60
>>616
本体は最新の安定版をを入れといた方がモジュールの依存解決が楽。
スクリプトは 5.8.1 で動くよう書いた方が無難。
620デフォルトの名無しさん:2011/04/21(木) 23:37:30.41
CentOS に標準で入ってるのが 5.8.x
5.12 にしたいなぁ。。。
621デフォルトの名無しさん:2011/04/22(金) 00:48:26.83
>>620
システム使う Perl とは別に
/usr/local/bin 以下に入れればいいんでない?
622デフォルトの名無しさん:2011/04/22(金) 01:40:32.29
やっぱそうゆう対応しか無いですよね。。。
でもなんかさ、1行目に 「local」 って入るのがなんか好きじゃないwww
623デフォルトの名無しさん:2011/04/22(金) 07:20:03.08
>>620
perlbrew
624623:2011/04/22(金) 07:21:56.67
書いてる途中でポストしちゃった
perlbrewで好きなバージョン入れて
シェバングは
#!/usr/bin/env perl
これでいいんじゃね?
625デフォルトの名無しさん:2011/04/22(金) 15:20:13.16
>>615
ありがとうございます
626デフォルトの名無しさん:2011/04/22(金) 22:38:31.14
5GBくらいのテキストファイルを開いて作業するという場合に、
プログラムの中ではメモリを使わないようにしているのですが、OSのページキャッシュ
がどんどん増えていってしまいます。
( free の cached で確認 )

プログラム(perl)のプロセスは ps や top で確認してもメモリはほとんど使ってないです。

このOS側でのページキャッシュをされないような perl の書き方はないでしょうか?

--------------
#!/usr/bin/perl -w
use strict;
use utf8;
binmode STDOUT => ':utf8';
use open IO => ':utf8';

open(my $fh, '<', 'big.txt');
while(<$fh>){
 ;
}
close($fh);
627デフォルトの名無しさん:2011/04/23(土) 01:01:33.07
sysread()、syswrite()、sysseek() を使っても駄目ですか?
628デフォルトの名無しさん:2011/04/23(土) 04:27:30.21
初歩的な質問でごめんなさい。
一念発起して、リャマ本を勉強中です。
3の倍数を使う練習問題やってる中で、%の存在を忘れていて、
サブルーチンでひたすら引き算してゼロになったら...って
思っていたんですけど、うまくいきませんでした。
なにがいけなかったんでしょうか。

chomp(my $input = <STDIN>) ;
given( $input ) {
when ( ! /^¥d*$/ ) { say "数じゃない" }
when ( 0 == &amari3($_) ) { say "3の倍数" ; continue }
}
sub amari3 {
while( $_[0] > 0 ) {
$_[0] -= 3 ;
}
}
629デフォルトの名無しさん:2011/04/23(土) 08:32:04.60
>>628
関数amari3の返り値でなく、$_と比較しないといけないので、

when ( &amari3($_), 0 ) { say "3の倍数" ; continue }
630デフォルトの名無しさん:2011/04/23(土) 09:30:42.77
ちなみに一回目のwhenは普通ifだろう。
631デフォルトの名無しさん:2011/04/23(土) 09:34:05.92
いやいやそもそもwhenって何?
whileに脳内変換されてた。

使ったこと無いや・・・
632Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/23(土) 09:35:13.87
低レベルなクソスレだなここは
633デフォルトの名無しさん:2011/04/23(土) 09:44:44.63
高レベルはべつにここで質問しないからな。
理解できないのかな?
634630,631:2011/04/23(土) 09:52:31.88
given-whenがswitch-caseか・・・
when ( ! /^¥d*$/ ) { say "数じゃない" }
when ( 0 == &amari3($_) ) { say "3の倍数" ; continue }
この二行だけ見て早とちりしたよ。
635Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/23(土) 09:54:07.87
カスばっかりだなここは
636 忍法帖【Lv=12,xxxPT】 :2011/04/23(土) 12:49:10.74
>>626
sysopen()でO_DIRECTを使うことができれば、できるかも。
メモリをcacheに取られたくないなら、OSの設定で制限しておく方が簡単だと思う。

>>628
ついでに
when( ! /^\d+$/ ) { say "数じゃない" }
637628:2011/04/23(土) 20:32:00.89
>>630さん
 お返事ありがとうございます。あの本独特のアメリカンジョークに耐えながら孤独に勉強しているので、お返事うれしいです。
 自分的にはifとかの方がわかりやすいんですけど、問題がgiven-whenを使えって指示だったので・・・すみません。

>>636さん
 ありがとうございます!!本しっかり読み直して確認しました!!
1個以上ってことですもんね。
638628:2011/04/23(土) 20:41:57.39
>>629さん
ありがとうございます!!馬鹿なのでまだ理解できていませんが
考えるヒントを頂いたと思って、本と一緒になんども読み返します!
639デフォルトの名無しさん:2011/04/23(土) 20:51:05.87
やばい
given-whenなんて構文今初めて見た
なんでこんなヤヴァいこと誰も教えてくれないんだ
どこのperlサイトにも載ってなけりゃ
rubyにすらないだろこんな構文
一体誰が得するんだ
ラクダ本読んだ人間を見分けるための秘密のおまじないかよクソッ
なんて世界だ 歪んでいやがる
俺はperlにはなれない
640デフォルトの名無しさん:2011/04/23(土) 21:27:42.01
自分も given-when を初めて知った。

switch-case は break だけど、
given-when は continue で再評価できるのか。
641デフォルトの名無しさん:2011/04/23(土) 21:27:44.69
642Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/23(土) 21:28:58.48
低レベルすぎ・・・・
643Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/23(土) 21:47:44.89
ペッペッ クソスレ ガシンガシン
644デフォルトの名無しさん:2011/04/23(土) 22:04:37.11
perl 5.8 で動かない構文を使うわけにいかない (>_<)
javascriptでも他ブラウザ対応で面倒くさいのに perl でも似た問題が発生するのは避けたい・・。
645デフォルトの名無しさん:2011/04/23(土) 22:57:20.31
笑える
646デフォルトの名無しさん:2011/04/23(土) 23:42:25.44
まぁ、while で囲って if で同じ動作できるから、別に使わなきゃ!って意思は無いけどね。
647デフォルトの名無しさん:2011/04/24(日) 02:28:42.62
質問してる奴は問題で構文指定されてるって言ってるのにメクラだから見えないのかね?
「俺は別のやり方でやるから(キリッ」
648デフォルトの名無しさん:2011/04/24(日) 03:31:04.95
>>647
別に質問した人にgiven-whenを使うなとは誰もいってないだろ
given-whenを今まで知らなかった人が今後使うべきか使わざるべきかいろいろ考えてるだけだ
なに余計なものまで見えちゃってるんだ君は
649デフォルトの名無しさん:2011/04/24(日) 08:50:15.03
>>638
コンマ(,カンマ)で羅列すると、(スカラーコンテキストでは)左から順に評価していき、
最後(一番右)の(評価した)値を返します。

その例でいうと、左のamari3関数を評価(実行しその返り値をもらう)し、最後の(右の)0
という値を返します。

そして、その返された0と$_(amari3関数を評価(実行)された時点で$_は変更されている)
が比較(~~スマートマッチ)されます。

perlop - コンマ演算子
http://perldoc.jp/docs/perl/5.12.1/perlop.pod#Comma32Operator
650628:2011/04/24(日) 20:44:46.70
>>649
むちゃくちゃよくわかりました!!!
ご親切に本当にありがとうございました。
書き込んでいただいた内容はコピペして、ソースコードに
勉強した内容として貼付けておきます。
コメントくださった他の方も、ありがとうございました。

ようやくなんとか初めてのperlを読み終わりました。
最後辺りはシェルの知識が足らずに???の連続でしたが。
練習問題に、プログラムの動作イメージみたいなのをつけて
くれたら、問題としてどういうものを作らなきゃいけないのかが
わかりやすいのに、と思いました。
ま、僕の理解不足ですね。精進します。
651デフォルトの名無しさん:2011/04/24(日) 20:49:10.03
UNIXコマンドの file のような
ファイルタイプを自動判別する Perlモジュールってあるんでしょうか?

652デフォルトの名無しさん:2011/04/24(日) 22:39:00.82
653デフォルトの名無しさん:2011/04/25(月) 00:27:38.57
Windowsのコマンドプロンプトで
>perl -wl -e 'print 10'
と打つと
Can't find string terminator "'" anywhere before EOF at -e line 1.
とエラーが表示されるのですが、Windows版PerlってLinux版みたいに
-eオプションが使えないんでしょうか?
654デフォルトの名無しさん:2011/04/25(月) 00:31:28.73
perl -e "print 10"
perl -e 'print 10'
655デフォルトの名無しさん:2011/04/25(月) 00:52:29.24
656デフォルトの名無しさん:2011/04/25(月) 00:58:19.64
>>654
>>655
サンクス。
うまく行きました。Windowsのコマンドプロンプトの問題ってことなんですかね?
657デフォルトの名無しさん:2011/04/25(月) 01:44:01.76
>>651
ありがとうございます。
とりあえず File::MMagic を使ってみる事にします。
658デフォルトの名無しさん:2011/04/25(月) 17:03:00.44
require Exporter;
our @ISA=qw/Exporter/;
our @EXPORT_OK = qw(hello bye);

この場合、require Exporter;をつけると書いてあるのですが
require Exporter;を書かなくてもhelloとbyeが使えるのは何故ですか?

SYNOPSISなどにはrequire Exporter;を宣言していますが
教えてください。
659デフォルトの名無しさん:2011/04/25(月) 17:47:14.05
>>658
メソッド呼び出しや Exporter の役割を根本的に勘違いしていないか?

#--- Foo.pm ---
package Foo;
use strict;
use base 'Exporter';
# それぞれコメントを付け外しして動作を確認
# our @EXPORT = qw(hello bye);
# our @EXPORT_OK = qw(hello bye);
sub hello { "hello @_\n" }
sub bye { "bye @_\n" }
1;
__END__

#--- test.perl ---
#!/usr/bin/perl -w
use strict;
use Foo; # qw(hello bye);
eval { print hello('John') }; $@ && warn "1: $@";
eval { print Foo->hello('Jane') }; $@ && warn "2: $@";
__END__

http://perldoc.jp/docs/perl/5.10.0/perlmod.pod
http://perldoc.jp/docs/perl/5.10.0/perlboot.pod
660658:2011/04/25(月) 18:48:11.10
#--- Foo.pm ---
package Foo;
use strict;
use base 'LWP::Simple';
# それぞれコメントを付け外しして動作を確認
# our @EXPORT = qw(hello bye);
our @EXPORT_OK = qw(hello bye);
sub hello { "hello @_\n" }
sub bye { "bye @_\n" }
1;

これで動くのは何故ですか?
use base 'LWP::Simple';とまったく関係ないモジュールをbaseにしても動くのですが
@EXPORTERも使えています
バグですか?
661デフォルトの名無しさん:2011/04/25(月) 19:11:24.41
>>660
LWP::SimpleがExporterを継承しているから、それをさらに継承したら
いろいろ余計な物もついて来ると思うがExporterも継承したことになる
ってとこじゃないかな。余計な物を触らない範囲ならなんとなく動く。
662658:2011/04/25(月) 19:34:06.19
とりあえずモジュール作るときは
use base 'Exporter';やっとけばいいですか?
663 忍法帖【Lv=14,xxxPT】 :2011/04/25(月) 20:33:22.23
オブジェクト指向で、Exporterが要らない世界に行こうぜ。
664デフォルトの名無しさん:2011/04/25(月) 22:06:35.72
->() で使うこと前提なら、 Exporter 要らないんだよね?
665 忍法帖【Lv=14,xxxPT】 :2011/04/25(月) 23:54:03.94
$obj->method();
Class->method();
これなら不要。

Package::function();
普通のサブルーチンコールでも、パッケージ名をつければ不要だけどね。
666デフォルトの名無しさん:2011/04/26(火) 09:54:10.56
Foo.pmにimport関数がなかったら
Exporterのimport関数がよばれるってことであってますか?

Exporterのimportを継承するってことですか?

Foo.pmでimport関数を書くとオーバライドされてしまうってことであってますか?おしえてください
667デフォルトの名無しさん:2011/04/26(火) 09:55:34.53
そしてuse Foo.pm
ってやったら

BEGIN{
require Foo;
import Foo LIST;
}ってことですよね?
ここのimportはExporterから継承したimprot関数ですよね?
668デフォルトの名無しさん:2011/04/26(火) 11:47:49.87
>>666-667
Foo.pmがExporterは継承していたらそうだね
669デフォルトの名無しさん:2011/04/26(火) 11:56:03.84
ありがとうございました
分からないことあったらまた聞きます
670デフォルトの名無しさん:2011/04/26(火) 12:03:20.32
第二の封印が解かれました
悪鬼羅刹が沸いてきたぞ・・・!準備はいいか?!

nechoneko
mopemope

が暗殺リストに加わりました。
671 忍法帖【Lv=2,xxxP】 :2011/04/26(火) 14:08:28.38
初心者です 質問させてください。
最初に書く#!/usr/bin/perlと#!/usr/bin/perl -wの違いは何なのでしょうか?
大学では-wをつけるように言われたのですが、ウェブでみていると何もつけていないことの方が多いように感じます。
よろしければ教えてください。
672デフォルトの名無しさん:2011/04/26(火) 14:14:14.47
たぶん Warning message
673デフォルトの名無しさん:2011/04/26(火) 14:16:52.26
モジュールじゃつかえねえだろたこ
モジュールだと#!/usr/bin/perlってかかないから
-wが使えない

だから use warnings;使うんだよたこ
674デフォルトの名無しさん:2011/04/26(火) 14:19:55.11
-w よりも -W をオススメ

で、w は細かい警告を出してくれるので、開発時は付けていた方が良い
675デフォルトの名無しさん:2011/04/26(火) 14:41:02.44
$hoge = 'a.b.c.1.2.3';
$hoge =~ tr/0-9a-zA-Z//c;


$hoge -> 'abc123'
にしたいのですが、うまくいきません。trの文法で何か間違えていますでしょうか?
676デフォルトの名無しさん:2011/04/26(火) 14:44:26.26
>>675
$hoge =~ tr/0-9a-zA-Z//cd;
677デフォルトの名無しさん:2011/04/26(火) 14:47:31.73
678675:2011/04/26(火) 16:25:44.43
>>676

ありがとうございます。
いつもs///gで置き換えてたので勉強になりました。
679デフォルトの名無しさん:2011/04/26(火) 23:52:59.16
http://coderepos.org/share/browser/lang/perl/WWW-Hatena-IconURL/trunk/lib/WWW/Hatena/IconURL.pm
これExporterとかないんですが大丈夫なんですか?
呼び出したとき使えないと思うんですが
まだ試してませんが

Exporeter書いてないモジュールがあるんですがメソッドとか呼び出し元で使えるのでしょうか?
module-starterとかで作った場合はExporterを書かないようななんか仕組みがあるんですか?
教えてください
680 忍法帖【Lv=15,xxxPT】 :2011/04/27(水) 01:07:11.60
681デフォルトの名無しさん:2011/04/27(水) 09:18:30.71
ああExporterはサブルーチンを呼び出すときでしたか
モジュールで使えるメソッドの場合はよかったんでしたね
682デフォルトの名無しさん:2011/04/27(水) 12:08:07.52
みなさんモジュールのTestとかしっかりやってるんですか?
http://cpansearch.perl.org/src/YAPPO/Module-Setup-0.09/t/020_run/
こんなにTest書くんですか?
見てるだけで死にそうです
こんなに書くのでしょうか?書かなかったらBANされたりするのでしょうか?
書かないと★印1個とかつけられるのでしょうか?
Testだけでモジュールのコードくらい書いてる気がするんですけど
どうですか教えてください
683デフォルトの名無しさん:2011/04/27(水) 12:16:55.16
書かなくてもいいよ。ただしそれをCPANには上げるなよ。
684デフォルトの名無しさん:2011/04/27(水) 12:23:10.14
http://cpansearch.perl.org/src/MITHUN/URI-Encode-0.03/t/00_basic.t
この人くらいのテストくらいで十分ですよね?
685デフォルトの名無しさん:2011/04/27(水) 12:24:49.08
それすら判断できないならCPANに上げるな。
マジで。
686Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/27(水) 12:27:24.60
糞もジュールあげまくっていいよ
687Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/27(水) 12:29:52.64
685が言ってることは嘘だから
そこまで重要視されてないよtestは
688Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/27(水) 12:33:20.68
あんなマメにTEST
やってるの日本人くらいだけだから
689デフォルトの名無しさん:2011/04/27(水) 12:34:22.49
>>658
はい、ケースバイケースですね
模索してみます
690デフォルトの名無しさん:2011/04/27(水) 12:46:18.86
糞モジュールは誰にも使われず廃れるだけ
691デフォルトの名無しさん:2011/04/27(水) 13:21:53.61
最初は少なくてもいろいろ問題が出るたびにそれが検出できるような
テストケース追加していくとそのうちびっくりするような量になったり
するな。
692デフォルトの名無しさん:2011/04/27(水) 18:45:58.84
Perl忍者はカスの真骨頂だから、コイツは無視でいいよ
693デフォルトの名無しさん:2011/04/27(水) 19:53:28.67
いじめ、カッコ悪い
694デフォルトの名無しさん:2011/04/27(水) 20:15:05.03
695デフォルトの名無しさん:2011/05/01(日) 23:00:02.10
PSGI Application書くためのframework探してるんだが、
どれ使うのがベターなんだろうか。

なんかどれも帯に短し襷に長しな感じで、
どれがいいのかサッパリ分からん。
ちなみにPythonではFlask使ってる。
696デフォルトの名無しさん:2011/05/02(月) 14:15:42.95
Tie::IxHash;いちいちやるのめんどくさいんですが
全ての変数に適応するやりかたってありますか?おしえてください
697デフォルトの名無しさん:2011/05/02(月) 14:19:19.22
>>696
Rubyの使用をお薦めします
698デフォルトの名無しさん:2011/05/02(月) 14:35:14.40
Ruby新車きめぇ
699デフォルトの名無しさん:2011/05/02(月) 15:47:35.66
sub core{
tie my %hash,'Tie::IxHash';
my $self=shift;
%hash=@_;

#print "$_\n" foreach(keys %hash);
push @{$self->{res}},{%hash};
}

sub new{
my $class=shift;
tie my %hash,'Tie::IxHash';
tie
my $self=bless \%hash,$class;
return $self;
}

print "$_\n" foreach(keys %{$g->{res}->[0]});
で呼び出すと順番ずれてしまいます

たとえば%hash=('res'=>[{a=>10,b=>20,n=>15}]);ってやると

n
a
b
って表示されます
tie my %hash,'Tie::IxHash';これは間違ってるんですが
どうやって設定すればいいでしょうか?
tie my %{$hash{res}->[0]},'Tie::IxHash';とやっても表示されないですし
700デフォルトの名無しさん:2011/05/02(月) 16:04:59.73
くそでえすねPerlは
701Perl忍者:2011/05/02(月) 16:15:07.68
>>699

my $self=bless {'cnt'=>0},$class;

sub core{
tie my %hash,'Tie::IxHash';
my $self=shift;
%hash=@_;
my $c=$self->{cnt};
tie %{$self->{res}->[$c]},'Tie::IxHash';
%{$self->{res}->[$c]}=%hash;
$self->{cnt}++;
}
702デフォルトの名無しさん:2011/05/02(月) 16:19:39.02
>>701
ありがとうございます
ちゃんと表示されました
703デフォルトの名無しさん:2011/05/02(月) 16:59:09.34
凄いなPerl忍者
704デフォルトの名無しさん:2011/05/02(月) 17:11:08.52
さすがperl忍者
705デフォルトの名無しさん:2011/05/02(月) 17:21:09.61
やるなperl忍者
706デフォルトの名無しさん:2011/05/02(月) 17:35:11.63
レベル高いな
データ構造も理解しオブジェクトを理解しているとは
別人の忍者か?
707Perl忍者:2011/05/02(月) 17:40:40.51
>>699>>701>>702は自演でした!!
708デフォルトの名無しさん:2011/05/02(月) 17:43:30.38
こいつは別事のPerl忍者か
凄いなPerl忍者
709デフォルトの名無しさん:2011/05/02(月) 19:15:16.65
umask でファイルのパーミッションを705にする方法ありませんか?
710Perl忍者:2011/05/02(月) 19:49:56.81
わかりません
711デフォルトの名無しさん:2011/05/02(月) 20:13:08.65
しんぱい 入りません
712デフォルトの名無しさん:2011/05/02(月) 20:15:12.85
umask 022; で644にはできるんですけどね…
755や705にはできないっすかね〜
713デフォルトの名無しさん:2011/05/02(月) 20:21:10.05
真のperl忍者ならわかるけどな
714デフォルトの名無しさん:2011/05/02(月) 21:19:42.56
Perl忍者惚れた
715デフォルトの名無しさん:2011/05/02(月) 22:08:26.69
716Perl忍者:2011/05/02(月) 22:26:40.27
ぐぐれば666ってでてきたのに
chmodつかえとしか言いようがない
717デフォルトの名無しさん:2011/05/03(火) 09:39:43.15
>>695
Flaskがいいなら、Dancerはどう?
718デフォルトの名無しさん:2011/05/03(火) 12:02:06.99
>> 682
そのモジュールは、複雑なモジュールなのでいっぱいテストが必要なだけで、数の問題ではない。
十分に動作が保証される程度にテストがかかれている必要はある。

テストがあまりにもすくない場合は、英語で長文でDISられるのは覚悟しておいた方がよい。
719695:2011/05/03(火) 15:33:44.72
>>717
Dancerか。何となく似たような系統ぽいね。
一回試してみるわ。ありがとう。
720デフォルトの名無しさん:2011/05/04(水) 17:57:22.95
perlでCGI書いてるんですが、http://--.com/ABC みたいな感じのリクエストを
http://--.com/index.cgiでABCを取り出す処理ってどうすればいいですか
721デフォルトの名無しさん:2011/05/04(水) 18:34:28.80
サーバー側でDirectoryIndexとかにindex.cgiを設定した上で$ENV{'PATH_INFO'}
722デフォルトの名無しさん:2011/05/04(水) 21:31:10.73
perl で CGI 書くとか凄いな。
C とか CPP じゃないんだね。
723デフォルトの名無しさん:2011/05/04(水) 21:57:21.60
いやむしろちょっと前までCGIでの使用率圧倒的だったろ。
724デフォルトの名無しさん:2011/05/04(水) 22:10:33.01
CPPってなんだ
Cのプリプロセッサかい
725デフォルトの名無しさん:2011/05/04(水) 22:16:28.63
CGI 自体は、普通 Perl で書かれていない。
ということが言いたいんだよ、多分。
726デフォルトの名無しさん:2011/05/04(水) 22:23:58.80
cpp eq c++
これぐらいも分からないのか・・・
727デフォルトの名無しさん:2011/05/04(水) 22:31:42.52
>>726
じゃ「C とか C++」って書けばいいじゃん
728デフォルトの名無しさん:2011/05/04(水) 22:34:34.37
>>722
2ちゃんねる…
729デフォルトの名無しさん:2011/05/04(水) 22:41:20.52
>>726
ププ
730デフォルトの名無しさん:2011/05/04(水) 23:25:19.47
>>728
あ〜これだから君は・・・
731デフォルトの名無しさん:2011/05/05(木) 02:36:47.04
>>726
syntax error
732デフォルトの名無しさん:2011/05/05(木) 14:55:13.26
これって何ていう用法なんでしょうか?

$hash{"a", "b"}
733デフォルトの名無しさん:2011/05/05(木) 15:04:47.94
@hash{"a", "b"} のことなら、スライス
734デフォルトの名無しさん:2011/05/05(木) 17:00:07.44
>>733
ありがとうございます。
それがスライスではなく、$でした。

jcode.plにある記述です。euc2sjisは関数です。

$convf{'euc' , 'sjis'} = *euc2sjis;
735デフォルトの名無しさん:2011/05/05(木) 17:20:39.87
CPANについての質問なのですが、現状、winXPでCPANのモジュールのインストールができているのですが、そろそろPCの寿命っぽくて近々win7に変えそうです
win7の場合、64bit版だとCPANの使用が敷居が高いとかエラーがでるとか聞いてるので32bit版にしようと思うのですが、win7の32bit版で普通にCPAN使えてる方いるでしょうか?

XPのときは下のサイトに盲目的に従ってやってしまったので、CPAN使用の仕組みが詳しく理解できていません
win7でも下のサイトの通りにやって出来そうなら問題ないです
ttp://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A1%E3%83%A2%2F%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB(CPAN)
736デフォルトの名無しさん:2011/05/05(木) 17:20:48.98
>>732
それは、多次元ハッシュ。但し、現在は推奨されない。
737デフォルトの名無しさん:2011/05/05(木) 17:23:45.91
>>736
ありがとうございます。
そういう名称なんですね。
非推奨ですか、了解しました。
738デフォルトの名無しさん:2011/05/05(木) 20:11:39.39
そのハッシュの使い方、カーニハンの『プログラミング作法』のマルコフ連鎖のPerl
実装で効果的に使われている例があるな。
739デフォルトの名無しさん:2011/05/05(木) 20:38:47.24
>>736
削除予定なんだっけ?
740デフォルトの名無しさん:2011/05/06(金) 00:42:16.61
まじで?
分かりやすくて便利なのになあ
741デフォルトの名無しさん:2011/05/06(金) 00:50:11.36
>>738
知ってると思うけど、$hash{foo}{bar} のようにすれば、
多次元ハッシュ(であるかのように見えること)は実現できるよ。

>>739
どうなんだろうか。Perl5デスクトップリファレンスに
「現在は推奨されない」と書いてあったから、その通り書いただけなんだけど。
742デフォルトの名無しさん:2011/05/06(金) 02:28:19.95
指定した数(ここでは100万とします)までの素数を順次出力していくプログラムをつくりました。

これでは20秒くらいです
Perl - http://codepad.org/s7xNkXUf
Cでは40秒くらいでした。
C - http://codepad.org/oASd0CDe

乗算をmodに変えてみたのがこれです。
すると、28秒程度になりました。
Perl -http://codepad.org/jzgGmtmV
Cでは40秒程度です。
C - http://codepad.org/h4emZp6R

CのコンパイラはVisual Studio 2008 C++です。


PerlよりCの方が速い と、どこかの記事に書いてありました。
が、実際にはこの結果です。
CよりPerlの方が速いのでは?

それか、どのような場合に、Perlでの処理速度が落ちるのでしょうか?
743デフォルトの名無しさん:2011/05/06(金) 02:45:15.23
>>742
表示出力をファイルにリダイレクトして実行した場合、双方何秒になりますか?
744デフォルトの名無しさん:2011/05/06(金) 02:49:13.78
>>743
今さっきからPerlをやり始めたのでやり方がわかりません・・・。

C++のほうも2時間ぐらいしかやってないのでファイル出力の仕方はわかりません・・・。
745デフォルトの名無しさん:2011/05/06(金) 02:59:12.50
じゃ ループ内の printとcout行を1+1;に書き換えて実行したらどうなりますか?
746デフォルトの名無しさん:2011/05/06(金) 03:28:18.41
$hash{a, b}と$hash{a}{b}って等価なん?
747デフォルトの名無しさん:2011/05/06(金) 03:44:48.87
% perl -MData::Dumper -Mstrict -we 'my %h; $h{"foo", ("")x$_} = $_ for 0..4; print Dumper \%h'
$VAR1 = {
'foo' => 3,
'foo' => 1,
'foo' => 2,
'foo' => 4,
'foo' => 0,
};

何コレおもしろい
748デフォルトの名無しさん:2011/05/06(金) 03:45:20.20
749デフォルトの名無しさん:2011/05/06(金) 03:50:47.28
>>745
乗算のPerlは20秒で、
乗算のC++は0.3秒ほどでした。

除算のPerlは28秒で、
除算のC++は0.8秒ほどでした。


Perlは変わってないように思えますが、
C++は劇的に変わっていますね・・・。

なぜこのようなことが起こるのですか?
750749:2011/05/06(金) 03:56:45.01
printf が高機能だから、出力した場合ではPerlに負けたとか・・・?

751デフォルトの名無しさん:2011/05/06(金) 12:37:10.79
触って数時間の人が比較しても、正直なんの参考にもならん…
752デフォルトの名無しさん:2011/05/06(金) 13:00:46.38
>>751
何言ってんだこいつ
753デフォルトの名無しさん:2011/05/06(金) 14:47:39.14
>>749
なぜだろう から全ては始まるんですよ。 この先、開発という作業は、この なぜ の繰り返しになります。
その理由を見つけた人が報酬を得られるわけです。
ちなみに>>749の理由、このスレの人らはみんな分かっている事なのですよ。
754デフォルトの名無しさん:2011/05/06(金) 14:59:44.58
C用の練習問題を流用して
素因数分解するコードを書いてみました。
foreach に使う配列の要素数を Math::BigInt で扱う巨大な整数にしたら
Range iterator outside integer range
と怒られてしまいます。
foreeach じゃ BigIntな要素数の配列は扱えないのでしょうか?

755754:2011/05/06(金) 15:55:36.49
>>754
自己解決しました。
use Math::BigInt した上で foreach文 の代わりに C風の for文を使えば行けました。
756デフォルトの名無しさん:2011/05/07(土) 00:39:59.98
foreachって全部メモリに読み込んでから処理するからダメなんだっけ?
foreachってことはループ回数数える必要がないってことだから、whileでもいいのかな
757 忍法帖【Lv=22,xxxPT】 :2011/05/07(土) 01:30:54.72
値が大きすぎると、カウント出来ないっつー問題がある。
foreach(100000000000..100000000001){
print "number: $_\n";
}

結果
Range iterator outside integer range at ...

他のループ構文で避けるのが吉だけど、
マジカルインクリメントで避ける裏技もある。
758デフォルトの名無しさん:2011/05/07(土) 01:51:23.71
驚異の26進数
759デフォルトの名無しさん:2011/05/07(土) 03:00:07.54
値が大きすぎると、というのが漠然としすぎているというか整数型超えてれば当たり前じゃないの?
760 忍法帖【Lv=22,xxxPT】 :2011/05/07(土) 04:07:33.61
レンジオペレータは、内部の整数表現を超えた値を扱えません。
変数で表現できる整数ならば他のループ構文が使えますので、そちらを使いましょう。
例:
for(my $i = 100000000000; $i <= 100000000001; $i++){
print "number: $i\n";
}
761デフォルトの名無しさん:2011/05/07(土) 06:24:24.90
>>747
Data::Dumper がヘボくて表示しきれてないだけだな。 Data::Dumpなら正しく扱える。

$ perl -MData::Dump=dump -Mstrict -we 'my %h; $h{"foo", ("")x$_} = $_ for 0..4; print dump \%h'
{
foo => 0,
"foo\34" => 1,
"foo\34\34" => 2,
"foo\34\34\34" => 3,
"foo\34\34\34\34" => 4,
}

\34 は 特殊変数 $; $SUBSEP で定義されてる。
762デフォルトの名無しさん:2011/05/07(土) 10:53:49.03
$i = 100000000000;
while( $i <= 100000000001 ) {
print "number: $i\n";
$i++
}
とも書けるけど、
for文と while文ではどっちが良いのかね?
763 忍法帖【Lv=17,xxxPT】 :2011/05/07(土) 11:03:21.79
昔こう聞いた事がある。
while:回数未定
for:回数指定

条件が数行とかでdo使いたい場合以外は
ほとんどfor使ってるね。
764デフォルトの名無しさん:2011/05/07(土) 12:07:07.47
>>762
スクリプト言語の場合、好みの問題でしかない。そのときのフィーリングだ。
別にどっちの方が可読性がよいということもない。
765デフォルトの名無しさん:2011/05/07(土) 14:27:38.78
use CGI;
my $cgi = new CGI;
print $cgi->header(-type=>'application/octed-stream', -attachment=>"$filename");

headerのtypeとかattachmentの前にあるハイフンって文法的にどういう意味があるんですか?
=>はハッシュとかの解説で読んだのでハッシュなのかなと思うんですが、ハイフンが何なのかわかりません。
766デフォルトの名無しさん:2011/05/07(土) 14:55:28.73
767デフォルトの名無しさん:2011/05/07(土) 15:13:41.68
>>766
日本語で頼む。
ってか、CGI.pmに限らないPerl文法的は解説が聞きたいんだけど……
768デフォルトの名無しさん:2011/05/07(土) 15:33:14.09
ちょっとは読もうとしてほしい…
別に文法的に特殊な意味はない。CGI.pm の場合は
$cgi->header('application/octet-stream');
みたいな渡し方もあるからそれと区別するための目印に - を使ってるってだけ。
769デフォルトの名無しさん:2011/05/07(土) 16:52:04.66
日本語はこっち

CGI - Common Gateway Interface のリクエストとレスポンスを扱う 【perldoc.jp】
http://perldoc.jp/docs/modules/CGI-3.49/CGI.pod#CALLING32CGI.PM32ROUTINES
770デフォルトの名無しさん:2011/05/07(土) 17:17:39.06
>>768
その言い方だと単に可読性のために-付けてるだけで付けなくてもいい、って言ってるように聞こえますが、そういうことですか?

試しに-付けるのと付けないのとどうなるか試してみたんですが、-を付けないとHTMLのソースがおかしくなるみたいでした。
表示は変わらなかったですが。

print $cgi->start_form(-action=>'./delete.cgi', -method=>'post');
<form method="post" action="./delete.cgi" enctype="multipart/form-data">

print $cgi->start_form(action=>'.delete.cgi', method=>'post');
<form method="action" action="./delete.cgi" enctype="multipart/form-data" method post>
771デフォルトの名無しさん:2011/05/07(土) 17:20:26.16
>>770
CGI.pm「が」区別するための目印だよ
772デフォルトの名無しさん:2011/05/07(土) 17:21:29.75
>>769
すみません、そのレスに気づく前に>>770の書き込みしました。

>実際には、最初の引数だけがダッシュから始まる必要があります。 最初の引数にダッシュがあれば、CGI.pm は後のものにもダッシュが あるものとします。
これPerlの文法という仕様は関係ないんですか……
何がなんだかよくわからない
773デフォルトの名無しさん:2011/05/07(土) 17:26:53.01
ハイフン付けて区別するって、そんなことできるんですか。
ハッシュのキー名にハイフン付けてもいいというわけじゃないですよね?最初の引数だけダッシュがいる、っていう話だから。
やっぱりよくわからんw
なんでそんなことができるんだ
774デフォルトの名無しさん:2011/05/07(土) 17:29:14.30
Perlの文法関係ないって言われましたけど、Perlが文法的にそういう書き方をOKしてなきゃできないことですよね。
連投すみません
775デフォルトの名無しさん:2011/05/07(土) 17:41:06.65
>>772
それはたとえば、
(-type => '...', -attachment => '...')
じゃなくて
(-type => '...', attachment => '...')
でもいいよって意味。
CGI.pm は第1引数(ハッシュとして見れば最初のキー)の1文字目がダッシュかどうかで引数をどう扱うかを決めるけど、
見た目の統一のために2つ目以降のキーの先頭にダッシュ付けても同じように処理するよということ。

>>773
「ハッシュのキー名にハイフン付けてもいい」んだよ。
(-foo => 'bar') ('-foo' => 'bar') ('-foo', 'bar')
Perlからすればこれらは3つとも同じ意味。その後それをどう処理するかは CGI.pm 側の問題。
776デフォルトの名無しさん:2011/05/07(土) 18:03:32.84
>>761
Data::Dumper でもできるお!

$ perl -MData::Dumper -Mstrict -we '$Data::Dumper::Useqq=1;my %h; $h{"foo", ("")x$_} = $_ for 0..4; print Dumper \%h'
$VAR1 = {
"foo\34\34\34" => 3,
"foo\34" => 1,
"foo\34\34" => 2,
"foo\34\34\34\34" => 4,
"foo" => 0
};
777デフォルトの名無しさん:2011/05/07(土) 18:07:31.77
>>775
ハイフン付けてもいいんですか。それなら納得です。
でも、スカラ変数名でハイフン使うのには制限あるっぽいのに、ハッシュのキー名では普通に頭にも使えるってなんじゃそりゃ

もう一つ質問いいでしょうか?

print $cgi->a({href=>"hoge.html"}, "hoge");
これ、中かっこはあるとないとで、どういう違いが生まれるんでしょうか?
ハイフンのときとは違って、かっこは後ろの方にもあるわけですし
これはPerl文法的な作用が何かあるんじゃ…と思うのですが。
>>769のページにも説明が書いてありましたが、

>CGI を使い始めたばかりの人の多くが、HTML タグ属性を囲む中かっこを必要とする HTML ショートカットの呼び出し方と、
>中かっこ無しに属性の生成を管理する他の ルーチンの呼び出し方との違いに惑わされます。 混乱しないで下さい。
>便宜上、中かっこは HTML を除くすべてでオプションです。
>もし好むなら、名前付き引数を取るどのようなルーチンでも呼び出すときに 中かっこを使えます。

あんまり説明になってないorz
778デフォルトの名無しさん:2011/05/07(土) 18:12:04.15
>でも、スカラ変数名でハイフン使うのには制限あるっぽいのに、ハッシュのキー名では普通に頭にも使えるってなんじゃそりゃ
考えてみれば、ハッシュなんでどんな文字使おうが自由なのは当たり前ですね。失礼しました。
779デフォルトの名無しさん:2011/05/07(土) 18:23:08.57
{ } は無名ハッシュへのリファレンスだ。perlreftutでも嫁。書籍ならアルパカ本あたりか。
http://perldoc.jp/docs/perl/5.10.0/perlreftut.pod
780デフォルトの名無しさん:2011/05/07(土) 19:22:33.24
CGI::Util::rearrange のコードを読んでみれば第1引数の頭のダッシュの扱いは
別に不思議なものに見えなくなると思う。
ちまちま有無をチェックしたり削り落としたりしてるよ。
781デフォルトの名無しさん:2011/05/07(土) 21:25:06.06
とりあえず、今ある疑問は解決しました。
ありがとうございました。
782デフォルトの名無しさん:2011/05/07(土) 23:24:00.15
どうしてelsifにしたの?
783デフォルトの名無しさん:2011/05/07(土) 23:34:52.44
elseのあとの { } を強要したから
784 忍法帖【Lv=23,xxxPT】 :2011/05/07(土) 23:46:48.34
>>782
use diagnostics;
elseif

elseif should be elsif at ...
(S syntax) There is no keyword "elseif" in Perl because Larry thinks it's
ugly.
785デフォルトの名無しさん:2011/05/07(土) 23:49:58.90
>>784
日本語でおk
786 忍法帖【Lv=23,xxxPT】 :2011/05/07(土) 23:52:34.39
>>785
http://perldoc.jp/docs/perl/5.6.1/perldiag.pod
> elseif should be elsif
> (S) Larry は "elseif" というのは醜いと考えたので、Perl にはこのキーワードは ありません。
787デフォルトの名無しさん:2011/05/07(土) 23:58:05.22
そういやパール兄弟っていたよね。
788デフォルトの名無しさん:2011/05/08(日) 00:00:27.09
どうせなら最大限に略してefで良かったんじゃね?
789デフォルトの名無しさん:2011/05/08(日) 00:01:23.38
>>787
サエキけんぞうのラジオ聴いてた
790デフォルトの名無しさん:2011/05/08(日) 10:56:34.43
配列のソートなら
@a = sort @a;
でできるのですが、
スカラコンテキスト内の文字列のソートはどうやれば実現できますでしょうか?
791デフォルトの名無しさん:2011/05/08(日) 11:23:50.76
@a = sort split //, $s ;
792デフォルトの名無しさん:2011/05/08(日) 15:13:49.06
$s = join "", sort split //, $s ;
793デフォルトの名無しさん:2011/05/08(日) 23:14:24.07
>791-792
ありがとうございます。
おかげさまで正規表現でのマッチが簡単に行えました。
splitやjoinを使うのですね。参考になります。
794デフォルトの名無しさん:2011/05/09(月) 00:08:05.19
www::mechnaizeでファイルをDLするコードを書いたのですが、
ループ回数をprintしても、何も表示されずに、プログラムが終了するときに、
一気に表示されるのですが、
これはどういう仕組みでこうなってしまうんでしょうか
795デフォルトの名無しさん:2011/05/09(月) 00:27:24.29
ソースが無いと分からんな
codepad使ってみて
どういう仕組み、と言うか自分で書いたものそのままの仕組みだと思うよ
796デフォルトの名無しさん:2011/05/09(月) 01:56:26.57
$| = 1;
797デフォルトの名無しさん:2011/05/09(月) 03:03:07.49
バッファリングですか。ということは、
print 'a';
print 'b';
ターミナルにabと表示されるのは、速すぎて一瞬で表示されてるわけではなくて、
1回で書いてるんですね。(データサイズが大きいと違うみたいですが)

ソース乗せなくて申し訳ありませんでした。


798デフォルトの名無しさん:2011/05/09(月) 23:24:53.63
>>797
それは1回で書いていてなおかつ速すぎて一瞬で表示されているんだと思う。

$|=1;
print "a";
sleep 10;
print "b\n";

で「$|=1;」がある時とない時を比べればわかりやすいかも。
799デフォルトの名無しさん:2011/05/10(火) 14:06:52.69
mapの結果に対してリファレンスを得て、それを別の配列の要素として入れたいのですが
一時変数を作らないと無理でしょうか?

今はこうしています:
my @tmp = map { ... } @ary;
push @results, \@tmp;

これと同じことを1行で書けるのでしょうか、無理なら諦めます
800デフォルトの名無しさん:2011/05/10(火) 14:13:08.91
push @results,[map{ ... }@ary];
ではどうか
801デフォルトの名無しさん:2011/05/10(火) 14:15:16.09
>>800
なるほどぉぉぉぉぉ!!!!!目から@が落ちました!
ありがとうございます!
802デフォルトの名無しさん:2011/05/10(火) 14:16:22.47
map { [$_] }

てきとーに書いたから間違ってると思うけど、map で返すときに [] で括ればいいようなきがすう。
803デフォルトの名無しさん:2011/05/10(火) 16:12:30.94
違うよ全然違うよ
804デフォルトの名無しさん:2011/05/10(火) 16:15:48.24
mapを[]で囲んだら何になるの?
map剥き出しのそのままじゃダメなの?
805799,801:2011/05/10(火) 16:27:52.56
mapを [ 〜 ] で囲んだ場合、[ 〜 ] 内がリストコンテキストだから
そこにmapみたいなリストを返す式を書くと結果が [ 〜 ] 内に展開される
…みたいなイメージで合ってますよね、たぶん
806デフォルトの名無しさん:2011/05/10(火) 16:35:46.75
うはリファレンスか
物凄い勘違いしてた
配列や何やらのままだと
[]で囲まないとダメだよな
笑って許してくれ
807Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 14:05:25.64
リファレンスとかこいつ聞く質問じゃねんだけど
基礎中のきそなんだけどここはPerlの質問だから帰ってください
808Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 14:08:39.51
my @tmp = map { ... } @ary;
push @results, \@tmp;


@tmp=();これやったら
配列もハッシュもそうリファレンスを消したら
@resultに入ってる値は全部きえるけどな
809Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 14:25:36.13
オブジェクトで新しいインスタンス生産しないと
ループさせて\@tmpいれても
@tmpでループごとに初期化されるから\@tmpのリファレンスがループごとに消される
わかりますかね?
810デフォルトの名無しさん:2011/05/11(水) 14:36:37.67
なるほどクソみたいなバグの発生場所なのね
じゃあ[map{....}@ary]は無名配列の無名リファレンスってわけ?
@resultsから[map{....}@ary]をpopするとその@tmp分の配列の領域はどうなっちゃうの?
漏れる一方? それとも@resultsを初期化すれば@tmp分のそれぞれの領域も解放されるの?
されないよね?

811Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 15:16:06.90
@resultからpopして得られるのは無名配列へのリファレンスだろ
push @results,[map{ ... }@ary];

push @results,[(1,2,3,4,5)]
と同じ

@resultsを初期化したら@tmpの領域は開放されない
@resultsに@tmpsのリファレンス入れてるだけだから
812Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 15:17:38.48
配列って言うより無名のリスト
813デフォルトの名無しさん:2011/05/11(水) 18:33:55.50
っていうことは\@tmpでも[map{...}@ary]でもどちらの方法でも、
@resultsからは常にメモリがダダ漏れでザル、と。
popの度に手綱が行方不明になって、最終的にシステムは落ちる……
814デフォルトの名無しさん:2011/05/11(水) 19:10:12.86
結城浩のPerl言語プログラミングレッスンという本のp.168、HTMLの色見本早見表を
作ってみよう、というプログラムで
my @range = {'00', '33', '66', '99', 'CC', 'FF'};
print '<html>';
print '<h1>Color Chart</h1>';
print '<pre>';
foreach my $rr (@range) {
foreach my $gg (@range) {
foreach my $bb (@range) {
print qq| <font color="#$rr$gg$bb"><tt>#$rr$gg$bb</tt></font>|;
}
print "\n";
}
}
print '</pre>';
print '<html>';

実行すると
<fontcolor="#HASH(0x3e9b94)HASH(0x3e9b94)HASH(0x3e9b94)"><tt>#HASH(0x3e9b94)HASH(0x3e9b94)HASH(0x3e9b94)</tt></f
のように$rrなどが数字にならず、ループもちゃんと回っていないようです。
何が悪いのでしょうか?
815799,801:2011/05/11(水) 19:21:33.67
>>813
ではどうすれば良いのでしょうか?
816デフォルトの名無しさん:2011/05/11(水) 19:25:16.97
817デフォルトの名無しさん:2011/05/11(水) 19:28:31.47
>>816
ふざけてんのかw と思ったけど、よく見たら解答が見えたわ
もう歳かな
818デフォルトの名無しさん:2011/05/11(水) 19:37:51.79
819デフォルトの名無しさん:2011/05/11(水) 20:12:57.43
>>814
my @rangeがハッシュリファレンスになってる。
そこの括弧は{}じゃなくて()
820デフォルトの名無しさん:2011/05/11(水) 21:27:13.08
>>819
サンクス。
お騒がせしました。
821デフォルトの名無しさん:2011/05/11(水) 21:42:03.56
かなりどうでもいいけどPerl忍者ってさ
ttp://blog.plaync.jp/giko/302948.slog
822デフォルトの名無しさん:2011/05/11(水) 21:44:56.96
夢がケントってのはひどいなw
823デフォルトの名無しさん:2011/05/11(水) 21:46:44.68
>>813
popして得たリファレンスを特に保持しないと、参照されなくなるのでPerlが自動的に開放してくれませんか?
824デフォルトの名無しさん:2011/05/11(水) 21:56:44.48
どうみてもケントはネタ
825デフォルトの名無しさん:2011/05/11(水) 22:00:37.41
>>823
その通り
相互参照とか参照のループでも作らない限り
Perlのシステムはそのへんちゃんと面倒みてくれる
忍者の頭では理解できてないようだけど
まあ夢がケントじゃ無理もないかね
826Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 22:07:33.79
>>823
君は Perl メモリ管理でぐぐったほうがいいですよ?!
827デフォルトの名無しさん:2011/05/11(水) 22:09:50.88
その手のデータ構造を殺せる正規の関数がほしい。
perlでふつうに書くととんでもなく遅いよ。
828Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 22:12:34.34
なにいってんだこいつwww
理解してないのはおまえだろ自作自演してる脳タリンwww
829デフォルトの名無しさん:2011/05/11(水) 22:17:09.50
>>828
わかってないのはあんた。
>809を自分でコードを書いて動かしてみろ。
830Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 22:18:55.06
上書きされんだけど わかってないのはおまえだろ
知ったか乙
831Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 22:20:57.26
カウンター狙った質問とかせこいっすよ シュシュシュ
対抗できるように、ぐぐって事前に反論の準備ととのえてるんっすよね?シュシュ

どこまで知識があるか探るときに使う手法っすよね シュシュ
832Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 22:23:30.13
while(){
my @tmp = map { ... } @ary;
push @results, \@tmp;
}
とかでループさせたら @tmpのリファレンスは上書きされてるってことなんだけど
わかったかね?クソバカ
833Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/11(水) 22:24:29.96
           / ̄ ̄ ̄`⌒\
          /          ヽ
\         |  _,___人_  |      /
  \       ヽ /        |/    /
             / ̄ ̄  ヽ,
            /        ',      /    _/\/\/\/|_
    \    ノ//, |  《・》 《・》 i ,ミヽ    /     \  バーカ!!  /
     \ / く(6|   ,(、_,)、  |6)ゝ \       /         \
     / /⌒  'ヽ  トェェェイ /  ' ⌒\ \     ̄|/\/\/\/ ̄
     (   ̄ ̄⌒ ヽ ヽニソ/   ⌒ ̄ _)   
      ` ̄ ̄`ヽ           /´ ̄
           |            |
  −−− ‐   ノ           |
          /            ノ        −−−−
         /           ∠_
  −−   |    f\      ノ     ̄`丶.
        |    |  ヽ__ノー─-- 、_   )    − _
.        |  |            /  /
         | |          ,'  /
    /  /  ノ           |   ,'    \
      /   /             |  /      \
   /_ノ /              ,ノ 〈           \
    (  〈              ヽ.__ \        \
     ヽ._>              \__)
834デフォルトの名無しさん:2011/05/11(水) 22:32:06.69
つまり、@resultsには一つの配列(@tmp)への参照がwhileした分だけ入ってるってこと?
835デフォルトの名無しさん:2011/05/11(水) 22:35:10.18
>>833
数行の動くコードも書けんのか。本当にグズだな。
836デフォルトの名無しさん:2011/05/11(水) 22:39:54.22
それだけと入ってるけどtempのリファレンスが上書きされちゃうっすよ!シュシュシュ!
837Perl忍者:2011/05/11(水) 22:45:20.72
クズの相手はこれまでですね理解してないようですので
838デフォルトの名無しさん:2011/05/11(水) 22:47:44.55
>>834
自分で数行書いて試せばすぐわかること。
839デフォルトの名無しさん:2011/05/11(水) 22:55:51.68
>>838
忍者さんが使用しているPerlが私の使用しているPerlと違うような気がしたから聞いたんだよ。
840デフォルトの名無しさん:2011/05/12(木) 01:02:01.25
きっとperl忍者専用の特殊な仕様なんだね
さしずめ忍者perlといったところか
841デフォルトの名無しさん:2011/05/12(木) 02:54:46.12
低脳 Perl忍者 のコードをループで回してみた
ARRAY(0x1845074)
ARRAY(0x1844e44)
ARRAY(0x1844e54)
ARRAY(0x1844e34)
ARRAY(0x1844e14)
ARRAY(0x1844df4)
ARRAY(0x1844dd4)
ARRAY(0x1844db4)
ARRAY(0x1844d94)
ARRAY(0x1844d74)
ARRAY(0x1844d54)
ARRAY(0x1844d34)
ARRAY(0x1844d14)
ARRAY(0x1844cf4)
ARRAY(0x1844cd4)
ARRAY(0x1844cb4)
ARRAY(0x1844c94)
上書きされないねぇ。
まぁ、ループ毎に新しく作られてるんだから当たり前だよね。
ループの外で宣言した @tmp に対してだったら TreeBoa … Perl忍者 の言ってる事が正しいかもね。
キュフフ
842デフォルトの名無しさん:2011/05/12(木) 09:52:18.30
Perl忍者さんの釣りにすごい必死になってレスつけてるひといますね
かわいそう
843デフォルトの名無しさん:2011/05/12(木) 09:52:52.17

 発 者 同         . 。_   ____           争
 生 同 .じ     .    /´ |  (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`|  }⌒j     
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   |∨ ` ̄
            /   ..:.:./    |   丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          |、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/|.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:|    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>
844デフォルトの名無しさん:2011/05/12(木) 09:58:42.55
Perl忍者さんはよく釣ってましたね
@tmpは上書きされると釣っていましたね
undefすれば別なんですが さすがですね忍者さんは
845デフォルトの名無しさん:2011/05/12(木) 10:02:35.64
忍者さんの釣りも、巧妙化しつつありますね
846デフォルトの名無しさん:2011/05/12(木) 10:52:41.31
つか確かトリップキー割れてんじゃなかったっけ、Perl忍者って
847デフォルトの名無しさん:2011/05/12(木) 13:13:51.11
へーそうなんだ
ということは割れてるトリップを本人も使い続けてるのか
それともトリップ使ってる奴は全員ニセモノなのか
848デフォルトの名無しさん:2011/05/12(木) 13:43:55.93
いくら割れてる鳥を使ってもその個性は消せない。
本人以外の人間が騙ってもその発言で忍者と分かってしまう不思議を忍者は持っている。
正負どちらの方向にせよ。
849デフォルトの名無しさん:2011/05/12(木) 14:01:54.08
元々複数人で使ってる鳥
850デフォルトの名無しさん:2011/05/12(木) 14:30:58.27
Perl忍者やってるやつは、そゆって人かな
851Perl忍者ninjahebi:2011/05/12(木) 14:53:36.92
[2011/05/09 19:18:43] Perl忍者: おい
[2011/05/09 19:18:46] Perl忍者: なにやってんだよまじで
[2011/05/09 19:18:48] Perl忍者: トリップ
[2011/05/09 19:19:23] Perl忍者: 死ねよ
[2011/05/09 19:19:32 | 19:25:06を削除しました] Perl忍者: このメッセージは削除されました
[2011/05/09 19:19:35] Perl忍者: 覚悟しろよな
[2011/05/09 19:19:37] くろさわようくん: OK
[2011/05/09 19:19:38] くろさわようくん: まかせる
[2011/05/09 19:19:39] くろさわようくん: うん
[2011/05/09 19:19:46] Perl忍者: 大阪wwwwwwwwwwwwwwwwwwwwwwww
[2011/05/09 19:19:59] Perl忍者: その腐った顔面もさらしてやるから
[2011/05/09 19:20:07] くろさわようくん: うん
[2011/05/09 19:20:10] Perl忍者: うんじゃねえよはげ
[2011/05/09 19:20:11] Perl忍者: おい
[2011/05/09 19:20:14] Perl忍者: なんでさらしてんの?
[2011/05/09 19:20:16] くろさわようくん: 俺イケメンだしいいよ
[2011/05/09 19:20:19] Perl忍者: 死ねよくず
[2011/05/09 19:20:20] Perl忍者: おい
[2011/05/09 19:20:22] Perl忍者: まじでばかだろ?
[2011/05/09 19:20:31] くろさわようくん: うん
[2011/05/09 19:23:50] Perl忍者: しねよ
[2011/05/09 19:23:53] Perl忍者: うんじゃねえよ
[2011/05/09 19:23:58] くろさわようくん: うyん
[2011/05/09 19:24:14] Perl忍者: キモオタみたいなつらしやがって
[2011/05/09 19:24:20] Perl忍者: キノコみたいだな髪型
[2011/05/09 19:24:29] Perl忍者: おかっぱ?
852デフォルトの名無しさん:2011/05/12(木) 16:03:12.70
常駐プログラムを作るときの注意事項を教えて
心配してるのはメモリを確保・解放してるタイミングなので
そこに絞った注意事項でもいいです
つーか、いつ変数が確保されるのかよくわからん
853デフォルトの名無しさん:2011/05/12(木) 16:25:53.92
Perlはメモリについて意識しないでいいようにできている
Perlはメモリについて意識しないでいいようにできている
Perlはメモリについて意識しないでいいようにできている
Perlはメモリについて意識しないでいいようにできている

C齧りさんは帰っていいっすよ
Perl使いはCやアセンブラできて当然なので
いちいちメモリがどうたらとか話しませんよ勘違い君
854Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/05/12(木) 16:33:41.30
メモリとかこいつ全然Perlしらなすぎ
855 忍法帖【Lv=26,xxxPT】 :2011/05/12(木) 17:17:23.61
856デフォルトの名無しさん:2011/05/12(木) 17:24:05.43
>>853
ありがとう
スコープを外れた変数は普通にGCに回収される
って解釈でよいのね

,>>855
真ん中のがたいへん参考になりました
857デフォルトの名無しさん:2011/05/12(木) 17:26:42.55
Perl はスクリプト終了時に開放じゃなかったっけ?
delete しても開放されなかったような・・・
858デフォルトの名無しさん:2011/05/12(木) 17:55:51.53
GCが回収したメモリ領域はあとで必要になったときに
再利用はしてくれるけど、OSに返却するかというと
そうでもないみたい??

例えばこんなプログラムを実行してみた。

sub f {
my $x = 'x' x 10000000;
print "f()の中¥n";
system 'ps l -p '.$$;
}


print "最初の状態¥n";
system 'ps l -p '.$$;
f();
print "f()を呼んだ後¥n";
system 'ps l -p '.$$;
f();
print "もう一度f()を呼んだ後¥n";
system 'ps l -p '.$$;


859デフォルトの名無しさん:2011/05/12(木) 17:56:12.29
結果は:

最初の状態
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 1000 30001 27949 20 0 6748 1472 - S+ pts/0 0:00 perl hoge.pl
f()の中
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 1000 30001 27949 20 0 26284 21024 - S+ pts/0 0:00 perl hoge.pl
f()を呼んだ後
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 1000 30001 27949 20 0 26284 21028 - S+ pts/0 0:00 perl hoge.pl
f()の中
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 1000 30001 27949 20 0 26284 21028 - S+ pts/0 0:00 perl hoge.pl
もう一度f()を呼んだ後
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 1000 30001 27949 20 0 26284 21028 - S+ pts/0 0:00 perl hoge.pl
860デフォルトの名無しさん:2011/05/12(木) 18:07:47.68
そんな低レベルなこと披露しなくていいから
ゴミみたいな基礎勉
861デフォルトの名無しさん:2011/05/12(木) 18:35:19.92
>>858
OSに返すかはfree(3)の実装依存ではないだろうか。
862デフォルトの名無しさん:2011/05/12(木) 19:34:35.47
OSにメモリ返さなくても、再利用さえしてくれれば 気にしないです。
863デフォルトの名無しさん:2011/05/12(木) 22:02:55.75
Perl忍者が教えるPerl忍法みたいなコンテンツのサイト作ってくれないかな?
864デフォルトの名無しさん:2011/05/12(木) 22:18:53.24
あまったれてんじゃねえよカス
865デフォルトの名無しさん:2011/05/12(木) 22:19:44.43
Perl忍者のサイト↓

Perl忍法
http://e8y.net/mag/
866デフォルトの名無しさん:2011/05/12(木) 22:55:36.75
テメーが低能なのが自らにも否定できなくなったら自演レスか。
くだらないことやってる時間があったら本でも読めよ。

いくらググってテメーにとって意味がわからんものはわからんまま終わるんだよ。
867デフォルトの名無しさん:2011/05/13(金) 08:46:18.87
常駐プログラム作ってる低脳がわめいております
868デフォルトの名無しさん:2011/05/13(金) 09:35:37.94
何このスレ…

循環参照や参照しっぱなしがない限り、普通はメモリを意識しなくていいよ。
もちろんデータ量がGB単位になってきたら別だけど。
869デフォルトの名無しさん:2011/05/13(金) 10:47:56.99
メモリの話するやつってCからやってきましたっていう自己紹介アピールするのと同じっすよね
ど素人丸出し
870デフォルトの名無しさん:2011/05/13(金) 10:48:34.24
Perlやってるやつは、ほぼC系できるから安心してね低脳
口に出して言わないだけだから
871デフォルトの名無しさん:2011/05/13(金) 11:05:30.88
CができなくてPerlをするって、XSもわからないしPerlのソースコードも読めないからPerlの素人って宣言?
872デフォルトの名無しさん:2011/05/13(金) 12:05:17.21
なんだ「Perlをする」って?意味不明だぞ
873デフォルトの名無しさん:2011/05/13(金) 15:47:13.99
Perl忍者より日本語がおかしいバカがわいてるね
874デフォルトの名無しさん:2011/05/13(金) 15:50:39.54
そういや昔はfjで「ネットをする」とかおかしいと気が狂ったみたいにわめいていた奴いたなあ。
875デフォルトの名無しさん:2011/05/13(金) 15:52:08.53
きもきも
876デフォルトの名無しさん:2011/05/13(金) 16:01:08.08
ここもPerl忍者プログラムが常駐してくそになりましたね
877デフォルトの名無しさん:2011/05/13(金) 16:37:38.74
足し算するスクリプト書いてみた
ttp://codepad.org/605WAFb5
878デフォルトの名無しさん:2011/05/13(金) 17:25:56.45
この流れはASテクノロジー
879デフォルトの名無しさん:2011/05/13(金) 17:56:25.24
Arcadia Saga
880デフォルトの名無しさん:2011/05/15(日) 12:47:01.25
5.14.0 キタ━━━━(゚∀゚)━━━━ッ!!
881デフォルトの名無しさん:2011/05/15(日) 12:54:22.47
882デフォルトの名無しさん:2011/05/15(日) 12:55:05.20
eval {
local $SIG{ALRM} = sub { die 'timeout' };
alarm 10;
`sleep 30`; # 時間のかかる処理
alarm 0;
};
alarm 0;

こういうよくあるタイムアウト付き処理をおこなうとき
タイムアウトが起きても「時間のかかる処理」のプロセスが
残ってしまうことがあるんだけど、これをタイムアウト時に
きっちり殺す方法はありますか?
883デフォルトの名無しさん:2011/05/15(日) 13:07:42.43
884デフォルトの名無しさん:2011/05/15(日) 13:10:31.90
>>883
死ねよ
885デフォルトの名無しさん:2011/05/15(日) 16:09:09.58
perldelta - perl v5.14.0 での変更点
http://perldoc.jp/docs/perl/5.14.0/perl5140delta.pod
886デフォルトの名無しさん:2011/05/15(日) 18:11:11.79
Class::Singltonに
my %args = @_ && ref $_[0] eq 'HASH' ? %{ $_[0] } : @_;
な記述があるんだけど、
最初の@_ &&って意味あるのかな
887デフォルトの名無しさん:2011/05/15(日) 18:43:42.91
>>882
fork execして、プロセスIDを適切にkill。

>>886
use warnings;していると、引き数が無いときに警告が出る。
888886:2011/05/15(日) 22:10:25.79
特に警告が出力されなかった

use warnings;

test();
test2();

sub test {
my %args = ref $_[0] eq 'HASH' ? %{ $_[0] } : @_;
}

sub test2 {
my $a = shift;
}
889デフォルトの名無しさん:2011/05/16(月) 07:34:26.09
>>888
確かに。
890デフォルトの名無しさん:2011/05/16(月) 21:25:28.02
Perl忍者って具体的にどんな人のことを指すの?
891デフォルトの名無しさん:2011/05/16(月) 21:49:21.94
【秘密】を持っている
892デフォルトの名無しさん:2011/05/17(火) 00:27:05.76
身体全体がイカ臭い人のこと
893デフォルトの名無しさん:2011/05/17(火) 05:03:55.93
c++で、
cin >> p >> d1 >> d2;

こう記述した場合、
100 200 300

という入力があれば、
P = 100, d1 = 200, d2 = 300と格納されます。

数字を空白区切りで入力したい場合、
Perlでも同じようなことができますか?
894デフォルトの名無しさん:2011/05/17(火) 05:25:05.71
my ($p, $d1, $d2) = split ' ', <>;
895デフォルトの名無しさん:2011/05/17(火) 07:04:49.88
>>894
ありがとうございます!

($p, $d1, $d2) = split / /, <>;

でなくて、

> ($p, $d1, $d2) = split ' ', <>;

というやり方でもいいんですね。
896デフォルトの名無しさん:2011/05/17(火) 07:19:58.13
split / /, <>;

split /\s+/, <>;

split ' ', <>;
とで少しずつ処理(結果)が違う。面白いね。
897デフォルトの名無しさん:2011/05/17(火) 07:25:32.45
>>896
え、違いますか?
898デフォルトの名無しさん:2011/05/17(火) 07:31:27.17
>>897
入力時、行頭や行末にスペースを入れたり、
間のスペースを複数(2こ以上連続)にしてみたりすると
違いが分かる。
899デフォルトの名無しさん:2011/05/17(火) 07:51:30.54
C++での、
while( cin >> n && n ){
・・・
}

という書き方は、Perlではできませんか?
1行でです。
900デフォルトの名無しさん:2011/05/17(火) 07:56:53.82
>>898
本当ですねw

何でこうなるんでしょうかねぇ
901デフォルトの名無しさん:2011/05/17(火) 08:26:51.89
>899
while( my $n = 0+<$fh> ){
}
902デフォルトの名無しさん:2011/05/17(火) 09:05:59.91
>>901
ありがとうございます。

どこでそういう知識を得たんですか?

903デフォルトの名無しさん:2011/05/17(火) 09:26:24.31
901 だけど、さっきのだと最後に<$fh> が undef を返して警告が出るな。

my $n;
while( $n=<$fh> , (defined($n) ? 0+$n : 0 ) ){ ... }

とか、1行に拘らずに

for(;;){
my $line = <$fh>;
defined($line) or last:
my $n = 0+$line or last;
}

とか書いた方がいいな。
904デフォルトの名無しさん:2011/05/17(火) 09:32:49.69
C++ の方がシンプルに見えるのは例外処理を省略したコード例だからだな。
警告とか気にしないなら901のコードでも動くっちゃ動く。
905デフォルトの名無しさん:2011/05/17(火) 09:33:16.37
>>902
…とまあどーでもいいことを延々考え続けた結果だよ。知識とかじゃない。
906デフォルトの名無しさん:2011/05/17(火) 09:43:41.53
>>900
・\s は [ \n\r\f\t] と同じ。
・splitで最大要素数(第3パラメータ)を略した場合、後の方の空要素は捨てられる。
・' ' でsplitした時は、/\s+/ と同等の処理に加えて先頭の方の空要素も捨てられる。
 というか行頭のスペースは無視して処理される。(そういう仕様)
907デフォルトの名無しさん:2011/05/17(火) 10:38:01.83
いつのまにか Perl 5.14.0 が出てた…orz
908デフォルトの名無しさん:2011/05/17(火) 11:29:41.84
perlの何かに特化したテキスト処理モジュール
(例えば http://search.cpan.org/~gward/Text-BibTeX-0.34/BibTeX.pm )
をカスタマイズするより yacc/lexで自分で書いた方はるかに手間いらずなんですが

perlの使いどころがよくわからないです

一行スクリプト専用?
909デフォルトの名無しさん:2011/05/17(火) 12:06:42.06
そりゃyacc/lexで簡単にできることはそっち使った方がたいてい楽だよね。
適材適所。perlのつかいどころも使ってりゃそのうちわかるよ。使う人の
能力依存という面もあるけどな。
910デフォルトの名無しさん:2011/05/17(火) 14:14:56.97
grep+sed+awk+ちょっとしたプログラミング、くらいの用途のときに凄い楽だと思う
それ以上はモジュール頼りになりがちだけど
911デフォルトの名無しさん:2011/05/17(火) 14:55:00.53
>>905
0を足したのは何でですか?
912デフォルトの名無しさん:2011/05/17(火) 15:12:32.50
数値として認識させるためでしょ
913デフォルトの名無しさん:2011/05/17(火) 15:22:08.82
>>912
<>から入力されたのが数字でも、数字と認識しないんですか?
914デフォルトの名無しさん:2011/05/17(火) 15:45:14.72
入力の最終行じゃなければ普通は \n で終わる文字列でしょ
それより $num+$str は use warnings の numeric が有効になってれば警告出るはずなんだけどな
915デフォルトの名無しさん:2011/05/17(火) 15:50:01.38
あ、$num+" \t\r\n" とかは大丈夫なのか
916デフォルトの名無しさん:2011/05/17(火) 17:10:55.00
5.14.0 で CGI を 3.54 にアップグレードしようとしたら、
FCGI の 0.71 で Makefile が作れずに引っかかってしまった…orz。
917デフォルトの名無しさん:2011/05/17(火) 17:46:27.78
>>916
>Yes, it is EUMM issue (6.57_05 installs with perl-5.14.0-RC2).
>Issue has gone after upgrade ExtUtils::MakeMaker to 6.57_10 from cpan
>
>Think it is fixed in 6.57_06 already.

と言うわけで FCGI-0.71 のバグじゃなくてバンドルされた ExtUtils::MakeMaker のバグ
EUMM の開発版の一番新しいのをインストールすれば良いんでないの?
918882:2011/05/18(水) 13:40:31.36
>>887
なんらかの結果を取得することはできますか?
919デフォルトの名無しさん:2011/05/18(水) 17:52:01.99
>>918
パイプを使うか、perlipcに載っている安全なパイプオープンのサンプルそのままで取得できる。
シェルを介する方法だと、多分シグナルがブロックされて上手く行かない。
http://perldoc.jp/docs/perl/5.10.0/perlipc.pod#Safe32Pipe32Opens
920919:2011/05/18(水) 18:05:30.97
うーむ、ブロックされるかどうかは環境依存だった。
921デフォルトの名無しさん:2011/05/19(木) 00:49:15.07
Perl をインストールして cpan の設定で、
自動で最寄りのミラーサーバを探させたら、

|>Looking for CPAN mirrors near you (please be patient)
|>............................. done!
|>
|>New urllist
|> http://mirror.yongbok.net/CPAN/ # 北朝鮮
|> http://cpan.cs.pu.edu.tw/ # 台湾
|> http://cpan.mirror.choon.net/ # シンガポール

って、日本国内のミラーサーバが一つも出ないって….
922デフォルトの名無しさん:2011/05/19(木) 02:10:24.08
キミが韓国に居るからだよ^−^
923デフォルトの名無しさん:2011/05/19(木) 12:25:35.23
文字列ソートを教えて

my @a=('aaaa.001', 'aaaa.002', 'aaaa.003');
my @s = sort { my $tmp2 cmp my $tmp1 } @a; #
print "@s\n";

ってやっても、降順にならないよ ><
924デフォルトの名無しさん:2011/05/19(木) 12:33:23.17
my @a=('aaaa.001', 'aaaa.002', 'aaaa.003');
my @s = sort { $b cmp $a } @a; #
print "@s\n";
925デフォルトの名無しさん:2011/05/19(木) 12:47:15.16
>>923
sortの時は$aと$bを使うってお母さんに教わらなかったか?
926デフォルトの名無しさん:2011/05/19(木) 12:50:19.94
ttp://blog-imgs-31-origin.fc2.com/n/a/k/nakasoku/2323.jpg
おかあさんよりむしろコイツに教わるだろう
927デフォルトの名無しさん:2011/05/19(木) 19:04:12.74
>>925
$a$bを使ってるのを一度見て変数なら何でもいいって思ったんだろうな
928デフォルトの名無しさん:2011/05/19(木) 20:11:52.05
foo barみたいな?
929デフォルトの名無しさん:2011/05/21(土) 00:50:01.41
Math::Random::MT って明示的に乱数種を渡さないといけないみたいなのだけど、
渡す乱数種を /dev/urandom から持って来るにはどう書いたら良いのでしょうか?
930デフォルトの名無しさん:2011/05/21(土) 03:19:05.77
rnd でふと思った

VIA の PadLock って、perl から使えないのかしら?
931デフォルトの名無しさん:2011/05/21(土) 13:45:55.54
WWW::MechanizeのclickとかsubmitでPOSTされるデータの文字コードってどっかで変えられますか?
sjisでPOSTしたいんですがUTF8でエンコードされてるみたいで
どうやっていじればいいのか迷ってます
932デフォルトの名無しさん:2011/05/22(日) 09:00:09.05
>>929
/dev/urandomって見かけはただのファイルなんだから、
バイナリファイルから4バイト読んで整数としてunpack
みたいな感じでいいんじゃねーの?
933デフォルトの名無しさん:2011/05/22(日) 14:40:10.46
>>931
my $mech = WWW::Mechanize->new();
$mech->get( ... );
$mech->current_form->accept_charset('Shift_JIS');
...
934デフォルトの名無しさん:2011/05/22(日) 15:53:59.96
http://b.hatena.ne.jp/entry?mode=more&url=http%3A%2F%2Fd.hatena.ne.jp%2Ftokuhirom%2F20110202%2F1296598578
のコメントで、
perl 5.8の「1回目ロード失敗後の2回目ロード」問題
とあるのは、どのような問題なのでしょうか?
935デフォルトの名無しさん:2011/05/23(月) 00:36:55.62
>>934
調べてみた。
下のコード(Foo.pmはエラーが起きるようなもの)があったとして、
Perl5.8.xはエラーを出さずに正常終了してしまう問題じゃないかしらん。

-- Foo.pm
package Foo;
Error !!
1;

--test.pl
eval "require Foo; 1";
require Foo;
936デフォルトの名無しさん:2011/05/23(月) 19:49:10.11
パターンにマッチした文字列を取り出すのに
$& を使うと効率が悪い、と聞きましたが
なぜ効率が悪いのでしょうか
937デフォルトの名無しさん:2011/05/23(月) 20:00:58.91
盲腸みたいな機能だよね。
938デフォルトの名無しさん:2011/05/23(月) 20:13:21.30
考えてみると性器表現で痴漢とか猥褻すぎるよな。
939デフォルトの名無しさん:2011/05/23(月) 20:17:58.34
WARNING: Once Perl sees that you need one of $&, "$`", or "$'" anywhere
in the program, it has to provide them for every pattern match. This
may substantially slow your program. Perl uses the same mechanism to
produce $1, $2, etc, so you also pay a price for each pattern that
contains capturing parentheses. (To avoid this cost while retaining
the grouping behaviour, use the extended regular expression "(?: ... )"
instead.) But if you never use $&, "$`" or "$'", then patterns without
capturing parentheses will not be penalized. So avoid $&, "$'", and
"$`" if you can, but if you can't (and some algorithms really
appreciate them), once you've used them once, use them at will, because
you've already paid the price. As of 5.005, $& is not so costly as the
other two.
940デフォルトの名無しさん:2011/05/23(月) 20:20:50.43
ふむふむ
941デフォルトの名無しさん:2011/05/23(月) 22:33:27.76
文字列から変数を作りたいのだけど、
foreach my $hoge ( qw( aa bb cc) ) {
warn ${$hoge};
}
で上手く動きませんでした。教えてください。

レキシカルスコープだから駄目なのかと思い、
${$_}としてみたのですが駄目でした。


942デフォルトの名無しさん:2011/05/23(月) 22:41:18.26
このスレかあっちのスレか定かではないが
「教えてください。」
って書く奴は要注意だったような記憶がうっすら
943デフォルトの名無しさん:2011/05/23(月) 22:51:43.18
連想配列使うことの方が利点だらけだろ
944デフォルトの名無しさん:2011/05/23(月) 23:40:24.65
なぜデリファレンスしてるのか、
文字列のリストの中身はそれぞれリファレンスだったのか?
謎は尽きない……。
945デフォルトの名無しさん:2011/05/24(火) 02:25:34.22
copalProのサイトが見れなくなってしまっているのですが、
引越し先とか分かりましたら教えてください。
(942さん申し訳ありません)
946デフォルトの名無しさん:2011/05/24(火) 03:11:30.75
>>945
「分かりましたら」等に続く「教えてください。」なら無問題でしょう。

>>941 はちょっとあぶないけど warn eval('$' . $hoge); なら動くんじゃね。
おすすめはしないけど。素直にハッシュ使う方がよかんべ。
947デフォルトの名無しさん:2011/05/24(火) 09:27:02.61
>>941
特に問題があるようには見えない
foreach の外で、$aa, $bb, $cc が my で宣言されてるんじゃないの?
948デフォルトの名無しさん:2011/05/24(火) 09:48:21.10
>>941
その断片だけなら動くよな。実際動かしてみたら

Warning: something's wrong at hoge.pl line 2.
Warning: something's wrong at hoge.pl line 2.
Warning: something's wrong at hoge.pl line 2.


で、少なくとも書いたとおりの動作ではある。

これが期待した物じゃないというなら説明してもらわんと
わからんね。


949デフォルトの名無しさん:2011/05/24(火) 10:28:08.47
>>941
$aa = 'A'; $bb = 'B'; $cc = 'C';
foreach my $hoge ( qw( aa bb cc) ) {
print STDERR ${$hoge};
}

とすれば、期待通りにABCと出てくるのだが、3行目を
warn ${$hoge};
に変更すると、何も出てこない。なんでだろ〜?なんでだろ〜?
950デフォルトの名無しさん:2011/05/24(火) 11:25:24.75
sed -ne '/HOGE/p'
をperlに変換するなら
perl -ne '/HOGE/ && print'
とやるしかないんでしょうか
951941:2011/05/24(火) 12:44:18.02
エスパーさせてしまってすみません。
やりたいことは、まったくその通りで、連想配列つかうべきでした。
ありがとうございました。
952デフォルトの名無しさん:2011/05/24(火) 14:08:31.91
>>950
しかないかといわれるとperlなんだからいくらでも書き方は
あるけどな。何を求めてるんだろうか??
953デフォルトの名無しさん:2011/05/24(火) 15:55:47.80
>>952
&& print
って書くのがださいよね、という話です。
954デフォルトの名無しさん:2011/05/24(火) 16:22:33.41
じゃあ一生 sed 使ってろよチンカス
955デフォルトの名無しさん:2011/05/24(火) 16:50:53.52
>>953
print if /HOGE/
956デフォルトの名無しさん:2011/05/24(火) 17:49:04.57
957デフォルトの名無しさん:2011/05/24(火) 18:56:36.31
>>955
ありがとうございます
文字数は変わらないですね
958デフォルトの名無しさん:2011/05/24(火) 18:58:09.25
>>954
sedは正規表現が貧弱じゃないですか

何を怒っているんですか?もしかして、ラリーさんですか?
959デフォルトの名無しさん:2011/05/24(火) 19:22:38.44
そもそもsedで '/pattern/p' だけを書くなんてしないよね
本来は何を書きたいのかがちょっと気になる
960デフォルトの名無しさん:2011/05/24(火) 19:31:23.15
たしかにこの例は grep HOGE でいいもんなぁ。
961デフォルトの名無しさん:2011/05/24(火) 19:47:33.85
本当にやりたいのは < > で囲われた中をとりだしたい
perl -ne '/<(.*)>/ && print $1'
sed -ne 's/^.*<\(.*\)>.*$/\1/p'
のようなものです。
962デフォルトの名無しさん:2011/05/24(火) 19:56:10.70
perl -ne 'print $1 if /<(.*)>/ '
ってやればいいんだよ。
963デフォルトの名無しさん:2011/05/24(火) 20:00:23.90
&& がダサイなら and を使えばいいじゃない
964デフォルトの名無しさん:2011/05/24(火) 20:12:52.05
>>962
ありがとうございます
文字数は変わらないですね
965デフォルトの名無しさん:2011/05/24(火) 20:57:05.70
>>964
どうしても不満ならsedでやれば良いんでない?
966デフォルトの名無しさん:2011/05/24(火) 21:28:20.86
printなんてよく使うんだからBASICみたく ? で代用したいよね
967デフォルトの名無しさん:2011/05/24(火) 22:39:24.80
perlをsedみたいに使いたいなら、pオプション(結果の自動出力)を入れればいい。

968デフォルトの名無しさん:2011/05/24(火) 22:45:20.10
Perlをsedやawkみたいに使いたい、スクリプトとして使いたいならこの本がおすすめ。

ミニマルPerl――Unix/LinuxユーザのためのPerl習得法
http://www.oreilly.co.jp/books/9784873113685/

969デフォルトの名無しさん:2011/05/24(火) 23:41:22.89
>>968
[★ 参考になる]
970デフォルトの名無しさん:2011/05/25(水) 00:42:49.74
初めてutf8を使いましたが、文字の扱いが全く分からなくてエラーがいっぱい出ます。

CGIとして動作させてます。
入力も出力も記述も全部utf8にしてます。

記述の先頭には use utf8 を書いてますが、なんかこれを書くとエラーが増える気がします。
でも書かなかったら書かなかったで、、require とかそうゆうのをやった時におかしくなります。


あとURLエンコードとデコードのやりかたが全くわかりません。
これもこれで use utf8 がある時とない時でエラーの挙動が違います。

#▼以下の記述は use utf8 をすると挙動がおかしくなります。
use strict;
use URI::Escape;

print "--- use URI::Escape ---\n";
my $unescape = qq(<h2>"hoge"&' bar '</h2>);
my $escape1 = uri_escape($unescape);
print $escape1, "\n";
print uri_unescape($escape1), "\n";
971970:2011/05/25(水) 00:43:07.44


とりあえず説明が意味わからんと思いますが、
なんて言うか、今困ってるのは

use strict;
use utf8;
binmode STDIN,":utf8";
binmode STDOUT,":utf8";
use URI::Escape;

sub receipt () {
my ($post, $get);
read(STDIN, $post, $ENV{'CONTENT_LENGTH'});
$get = $ENV{'QUERY_STRING'};
return($post, $get);
}

sub my_decode (@){
my @decode = @_;
foreach my $decode (@decode){
 $decode = uri_unescape($decode);
}
return(@decode);
}

print my_decode receipt; #※HTMLにしてブラウザに出力

思いっきり文字化けします。
なんですかこれ。
972デフォルトの名無しさん:2011/05/25(水) 00:44:48.17
html側のchar-setだろ
973170:2011/05/25(水) 00:51:38.09
>>172
出力部分はこんな感じになってます。

$print_code .= q[Content-Type: text/html;charset=UTF-8] . qq[\n];
$print_code .= qq[<HTML lang="UTF-8">];




%E6%97%A5%E6%9C%AC%E8%AA%9E
これをさっきの関数でデコードさせて出力させると、
日本語
こうなります。
日本語
って表示されれば成功です。
974970:2011/05/25(水) 00:54:16.29
安価とかの数字を完全に間違えました。
975デフォルトの名無しさん:2011/05/25(水) 01:05:32.53
入力文字列をデコードしろ
976デフォルトの名無しさん:2011/05/25(水) 01:18:27.97
CGIの質問は板違いじゃね?
977デフォルトの名無しさん:2011/05/25(水) 01:32:24.35
>>975
print my_decode receipt;
こうゆう意味ではないと言うことですか?

>>976
utfフラグの段階からよく分かってないんでこうなりました。
ごめんなさい。
978デフォルトの名無しさん:2011/05/25(水) 01:46:20.92
Perlコーディング初心者質問スレ Part 62
http://hibari.2ch.net/test/read.cgi/php/1295170172/
979デフォルトの名無しさん:2011/05/25(水) 02:06:56.26
すみません、誘導されてみたのですが、どうもあっちはユニコードが扱えない板みたいなんでこっちでも質問を継続します。

マルチ質問でおかしくならないように責任持って並行に状況書き込みをします。
980デフォルトの名無しさん:2011/05/25(水) 02:23:07.23
板違いな上にマルチか
981デフォルトの名無しさん:2011/05/25(水) 03:28:12.13
あっちはビットが変化するしム板でしかやれないだろ。

>>970 use utf8 と use URI::Escape 合わせると二重処理になるよ。CGIは関係なくperlの文字解釈の問題。
詳細は>>980よろしく。
982デフォルトの名無しさん:2011/05/25(水) 04:15:21.66
ようするにだ、Perlの外から入ってきたものは全部フラグを付けれ
983デフォルトの名無しさん:2011/05/25(水) 05:32:49.52
uri_unescapeは、特にunicodeの処理しないから、
そのままLatin1-supplementの文字になってるだけじゃん。
バイナリで読んで、エスケープ解いてからutf8で変換。
984デフォルトの名無しさん:2011/05/25(水) 06:27:00.01
んなの、向こうのスレのお猿さんテンプレに書いときゃ良いと思うんだけどなあ。
向こうで何百回繰り返されてる質問だろうに。
985デフォルトの名無しさん:2011/05/25(水) 11:38:22.94
>>967
マッチしたときだけ出力したいんだよ
986デフォルトの名無しさん:2011/05/25(水) 11:40:42.66
>>968
4410円は高い。441円なら買う。
あと、左上のまばたきが怖い。
987デフォルトの名無しさん:2011/05/25(水) 12:50:47.75
>>970
こっちでも誘導先でも答え出てますやん。
試行錯誤する気が無いなら来るな。
988970:2011/05/25(水) 18:00:52.21
981-983
ぐぐってるウチに扱い方が分かり、
入出力関係の関数を全部書き直して解決しました。

今までEUCとsjisしか使ってなかったんで助かりました。
ありがとうございます。
989デフォルトの名無しさん:2011/05/25(水) 18:33:32.60
俺ならuse CGI;してparamで受け取る
990デフォルトの名無しさん:2011/05/25(水) 18:34:07.10
解決できてなにより。
991デフォルトの名無しさん:2011/05/25(水) 22:49:49.50
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
992デフォルトの名無しさん:2011/05/25(水) 23:08:31.14
p
993デフォルトの名無しさん:2011/05/25(水) 23:16:46.05
次スレ立ての旅に出てみる。
994デフォルトの名無しさん:2011/05/25(水) 23:20:22.83
次スレです。

Perlについての質問箱 47箱目
http://hibari.2ch.net/test/read.cgi/tech/1306333092/
995デフォルトの名無しさん:2011/05/26(木) 00:57:34.15
>>994
996デフォルトの名無しさん:2011/05/26(木) 07:37:10.60
>994

誘導パピコ

Perlについての質問箱 47箱目
http://hibari.2ch.net/test/read.cgi/tech/1306333092/
997デフォルトの名無しさん:2011/05/26(木) 07:42:57.86
>>994
say '乙';
998デフォルトの名無しさん:2011/05/26(木) 14:11:35.11
>>994
say '乙';
999デフォルトの名無しさん:2011/05/26(木) 14:11:51.34
>>994
say '乙';
1000デフォルトの名無しさん:2011/05/26(木) 14:12:04.00
exit(0);
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。