1 :
デフォルトの名無しさん :
2011/02/14(月) 18:58:52
# [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 でエンコードする必要があります。
いちもつ。
しればしるほど 俺TUEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!!!!!!! 言語になっているPerlはすばらしい わかるかきみたち? 俺にはわかる
perlの開発環境ってみなさん何つかってるんですか emacsでやろうとしたら、全然だめだった
ぼくはmiとviです
13 :
デフォルトの名無しさん :2011/02/15(火) 10:11:30
>>4 についてなんですが、
>use open IO => ":encoding(cp932)";
があるので、
>open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
の行の「encode()」は無くてもいいんですよね?
それとも無いとダメなんですか?
>>13 前者は読み書きするファイルの中身の文字コードについての記述で
後者はファイル名の文字コードについての記述だからそれぞれ必要。
>>13 前者は読み書きするファイルの中身の文字コードについての記述で
後者はファイル名の文字コードについての記述だからそれぞれ必要。
16 :
13 :2011/02/15(火) 10:47:40
>>15 なるほど
encode()で$fileを内部文字コードにしてたんですね
勉強になりました
大事なことですもんね。 強調したい気持ちもわかります。
下記コードの(1)〜(3)はどれもきちんと動作するのですが、違いは何でしょうか? 困っているわけではなく、純粋に違いを知りたいだけです。 $fh = STDOUT; # (1) $fh = *STDOUT; # (2) $fh = \*STDOUT; # (3) print {$fh} "foo";
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)";
if ($content =~ /ほげ/) { } これを「ほげ1」「ほげ2」「ほげ3」の3つを AND、ORで書く方法ってありますかね
$1の中身が'01'とか頭に0がついている文字列でも if($1 > 2) {} とか、2より大きい場合とか数値として演算しても問題ないのでしょうか? もし問題があるならどうやるのがいいのでしょうか?
もんだいないよwwwwww やってみればいいじゃん
$1ってつかえねえからwwwwwwwwwww もうお前死ねよ
>>23 頭に0ついていても問題なし?
ありがとう
>>24 そうなんだ
ありがとう
入力された文字列の「ひらがな、カタカナ、英数字、記号」の「全角、半角、大文字、小文字」に マッチするようにしたいです。 例えば正規表現で表現すると "あさ/"と入力されたら/[あアアぁァァ][さササ][//]/でマッチを取るように。 #そのまま書くと下記のようなイメージ 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); さすがにこれは置換の行が増えすぎてナンセンスだと思うので、 何かスマートな方法もしくはモジュールなどありますでしょうか?
文字クラス
28 :
26 :2011/02/15(火) 13:31:31
改行多いので分けました。
※
>>26 で、半角のカナが全角になっている箇所がありました。
#a.txt(文字コードsjis)
あさ/あさ
ぁさ/ぁさ
ァサ/ァサ
アサ/アサ
A.B
A.B
a.b
#---------------
上記のようなファイルがあった場合、
"あさ/"が入力されれば
#---------------
あさ/あさ
ぁさ/ぁさ
ァサ/ァサ
アサ/アサ
#---------------
"a.b"が入力されれば
#---------------
A.B
A.B
a.b
#---------------
を出力させたい。
JavaVM上で動くPerlインタプリタって作ることが出来るものなんですか? いいサイトとかあったら教えて欲しいです
頑張れば作れると思うけど良いサイトがあったらとか言ってる程度の 根性じゃ難しいんじゃないかなぁ。あとCで書かれたモジュールとか そのままじゃ使えなくなっちゃう(多分)ので微妙かも。挑戦するのは 面白いと思うよ。
頑張れば作れると思うけど良いサイトがあったらとか言ってる程度の 根性じゃ難しいんじゃないかなぁ。あとCで書かれたモジュールとか そのままじゃ使えなくなっちゃう(多分)ので微妙かも。挑戦するのは 面白いと思うよ。
すまんどうもマウスの調子が悪いようだ
うぜええええええええええ
ここさあ、ここいいねえ ここ ここで質問回答すれば Perlの理解力アップするしいいねここ もっと質問しろカスども
無人島に1つだけ持って行くなら何?
Perl関係ないよwwwwwwwwwwwwwwwwwwwwwwwwwww
perlにはphpみたいなmysqlの排他制御はないの? sqliteでも排他制御できると一番うれしいのだけど
38 :
デフォルトの名無しさん :2011/02/16(水) 15:30:51
perl初心者質問は、ここでok? perlをエディタでやりたい。miなど。 どうやって設定する? os mac osx
うぜえwwwwwwwwwwwwwwww
ほんとうぜぇわ糞コテ
/ニYニヽ /ニYニヽ /( ゚ )( ゚ )ヽ /( ゚ )( ゚ )ヽ /::::⌒`´⌒::::\ /::::⌒`´⌒::::\ | ,-)___(-、| | ,-)___(-、| でででででってででてってていうwwwwwww | l |-┬-| l | | l |-┬-| l | / `ー'´ 、` ̄ ̄ヽ / 、 `ー'´ | / __ Y ̄) | ( (/ ヽノ_ | ででってででてでっていうwwwwwwww (___) Y_ノ ヽ/ (___ノ \ | | / | /\ \ / /\ | | / ) ) ( ( ヽ | ∪ ( \ / ) ∪ \_) (_/ wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww WWWWWWWWWWWWWWwwwwwwwwwwwwwWWWWWWWWWWWWWww wwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwww でっていうwwwwwwwwwwwwwwwwwwwwwwwwwwwwででででっていうwwwwwwwwwwwww WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
MacOSXのクソガキどもはさあ あれだよな ブログやホムペ所持率たかいよな 絵とか載せたり、アニメキャラの画像つかってさああ miとかわめいてんだろ?なあ? クソマカ 君はマカーなんだけどさあ? 数年まえの俺もマカーだったんだよ? だけど俺のほうがすごかったんだよマカーとして お前はmiとかいうまえにタイムスリップして俺と勝負してみ? 負けるから へなちょこはターミナルで『エイッ!」っていってれば
私信すみなせん
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でできますか?
できない理由なくね
できるかできないかならできるけど
48 :
デフォルトの名無しさん :2011/02/16(水) 20:21:56
宿題なんで教えてください(´ρ`)
なんで
なんで宿題だと教えなければならないのか
宿題ならクラスの友人に聞けよ。
友人総動員でもわからなかったんだろ・・・
ひゅひゅだよ みんな喧嘩はよくないよ
web見りゃ何でも答えはのっている(だから「つまらないこと」を学ぶ必要など無い)という タワケな根性だとこの先一生後悔するぞ。 脳みそなんてのは使ってなんぼ、体を動かすのとまったく同じこと。
大学生(専門学生? 高校生?)に説教しても手遅れだよ。 もっち小さいときにきちんと教育しないと。 大人になってからだと、自衛隊とかそういうところで根性を叩きなおさないと無理。
perlはflockでファイルの書き込み排他制御できるのに sqliteやmysqlの排他制御できないの? 誰か教えてよ
mysqlは鯖側でやるからperlのflockは関係ない。 sqliteは使ったことないから知らん。
毎回追記でオープンして、flock すりゃなんとかなるよね。
epsの簡単な図を作りたいのですが、適当なモジュール等はありますでしょうか? PLplotを使おうと思ったのですがマニュアルが分かりにくくて困っています。
61 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 22:56:52
あるスクリプトを長い期間実行させておきたいのですが かわりに実行してくれるサーバとかないんですか? vpsつかうしかないんですか?おしえてください
62 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 22:58:50
そのスクリプトで僕が死んだあとも2chに書き込みさせたいです そしてインターネットでくらしたいです
63 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 23:00:25
おわりです
はい
65 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 23:17:59
っで?それだけ?w っていうのやめろ おこるからな
66 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/17(木) 23:22:02
あ〜もうだめだ
日本はテレビ局が国に支払う電波利用料が不当に安く設定されているぞ。 政府は消費税を上げる前に、電波オークション制度を導入し、税金としてテレビ局にきちんと払わせるべき。 フジテレビ テレビ朝日 日本テレビ TBS 平均年間給与 1534万円 1,213万円 1,263万円 1358万円 従業員数 1431人 1,153人 1,159人 ※全テレビ局が支払う電波利用料はたったの7億円 ■電波オークションとは 電波帯域の利用免許を各テレビ局や通信事業者に付与する際、一番高い買い取り額を提示した会社に割り振る方式 先進国の約2/3が導入し、問題なく運用されており、大きな税収となっている。 ■反対している者たち ・各テレビ局(国民の公共の財産である電波を格安で利用し、従業員の給料等にあてているため) ・総務省(現状、電波利用料は総務省の管轄であり利権となっている。財務省の管轄として税金化してほしくないため)
ラクダ本ってみんな手元に置いてるの?
図書館で借りる
while(<>) { print if /BEGIN/ .. /END/ } とやると、BEGINが含まれる行からENDが含まれる行がprintされるけど、 BEGINとENDが含まれる行はprintしないようにするエレガントな方法ってある? 何も考えずに書くと、 while (<>) { if (/BEGIN/../END/) { next if /BEGIN/; next if /END/; print; } } という、だっさいコードになるんだけど。
>>70 コードがダサいんじゃない、
おまえがダサいんだ
エレガントwwwwwwwwwwwwwww Rubyでもやってろよかす
>>70 print if ((/BEGIN/ .. /END/) and not (/BEGIN/ or /END/));
今まで独学で配布してるスクリプトなんかを見たりして学んできたんですが、ちゃんと基礎からしっかり覚えたいと思います。 お奨めの入門書や手元に置いておくべき本とかありますか?
ラクダ、アルパカ、リャマは?
>>74 自分はPerlクックブックだけでかなり上達した。
各章の冒頭に概要が書いてあり、そこを読むだけでもPerlのエッセンスがかなり分かると思う。
入門書は、
>>75 さん指摘のオライリー本を立ち読みなりして、今の自分にあったものを購入すればいいと思う。
あと、perldoc.jpで各種チュートリアルを読むのもいいかも。
えっせんすwwwwwwwwwwwwwwwwwwwwwwww
78 :
みなみな ◆MINA.uoEHM :2011/02/19(土) 10:06:22
ひゅひゅだよ アルパか本あるよ しおれてるよ
>>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}
}
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
>>80 my $points = ([0, 3], [1, 1], [3, 0])[ ($home_goals <=> $away_goals) + 1 ];
0点
おまえらしってる? my $p=([1,2],[3,4],[5,6]); この場合右のリストはスカラーコンテキストで評価されて $p=[1,2]; $p=[3,4]; $p=[5,6];ってなって最終的に最後の[5,6]になるんだぜ しらなかった?
結果はそうなるけど、 スカラーコンテキストだったら要素数じゃないの?
スカラーコンテキストで要素数になるのは配列。リストと配列は 別物なんだよね。
あれあれれれ?wwwwww
my @a=(1,2,3,4,9); my $b=@a; print $b; @aが配列 (1,2,3,4,9)がリストだろw
リストと配列の違いもわからねえばかおつwwwwwwwwwwwwww wwwwwwWWWWWWWWWWWWWWWWWWWWWWWW WWWWWwwwwwwwwwwwwwwwwww
なんかだまされてる $p = 0; $p += (1, 2, 3); print $p; # 3
90 :
88 :2011/02/19(土) 18:08:46
>>84 >>89 ありがとう。評価はして左に渡されるのは最後の結果ということか。
普段やらないことは予想も付かないところがPerlらしい...?
お礼いえこら
よしPerldocでもみるか
94 :
Perl忍者lvl1 ◆M5ZWRnXOj6 :2011/02/19(土) 23:57:48.07
マジカルインクリメントっていうのしってるかい?w 名前かっこいいねw
普段やらないことって リストなんてlispそのまんまじゃん 普段やらないんじゃなくてお前の知識が無いだけだ lispのリストすら知らないんだったらプログラマやるのは厳しい デスマの元だ
>>92 難しく書いてるけど、cの変数宣言
int a, b;
もコンマ演算子な。
if (1 .. /^$/); 行数が/^$/までってどういういみ 行頭と行末?なにがしたいのこれ 教えてください
行がある間だけ真ってことだろwwwwwww $.==1 .. /^$/
>>98 /^$/は空行までってことだろう。
>>70 実は..演算子の値はただの真偽値じゃなくて
偽としては空文字列が返され、 真としては (1 から始まる) 順に並んだ数値が返されます。 この通し番号は、新たに範囲が始まるごとにリセットされます。 範囲の最後の数字には、文字列 "E0" が末尾につけられます。
ってことなので、
while (<>) {
if ($r = (/BEGIN/..($g=/END/))) {
print if $r > 1 && $r !~ /E0$/;
}
}
てな書き方もできる。
すまんゴミが残ってた。 while (<>) { if ($r = (/BEGIN/../END/)) { print if $r > 1 && $r !~ /E0$/; } }
101 :
97 :2011/02/20(日) 15:03:14.17
if (1 .. /^$/); /^$/は$_とマッチさせているということでよろしいでしょうか? $_=~/^$/ マッチするまで続けるのでしょうか?
102 :
97 :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になるんですか?
104 :
97 :2011/02/20(日) 17:39:16.00
>>リストコンテキストでは、左の値から右の値まで (1 づつ昇順で) 数えあげた値から なるリストを返します。 左側の値が右側の値より大きい場合は、空リストを返します。 foreachで例えると foreach(1..5) = @a=(1,2,3,4,5) foreach(@a) 左の値が右の値より大きくなると空だから終了されるのはわかんだけどさ マニュアルのどこに書いてあんの ねえ?こたえてよほら?ねえ?w
105 :
97 :2011/02/20(日) 17:42:38.79
if (1 .. /^$/) これが知りたいですww教えてくださいw マニュアルなんて読みましたw 1から/^$/って意味がわかりませんw 空白行を見つけるまでっていう意味ならなんとなくわかりますw
106 :
Perl忍者lvl1 ◆M5ZWRnXOj6 :2011/02/20(日) 17:45:18.68
こんなのもわからないの? かわいそう・・・
107 :
Perl忍者lvl1 ◆M5ZWRnXOj6 :2011/02/20(日) 17:46:08.36
ここに書き込むのやめてください ゲロクズゴミ○ゆ君
108 :
Perl忍者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
#########
これでわからなかったらカスすぎるよ君は
1..いらねんじゃね?^$だけでいいんじゃねぇの?
1で常に真って意味だ
いや、空行検知して処理止めるだけなら^$だけでいい とかだろ
>>111 範囲演算子の場合は違うんだなこれが。
スカラの ".." の被演算子が定数表現であるときは、その被演算子は暗黙に、 現在の入力行番号(変数 $.) と等しい(==) 場合に真となります。
110みたいなカスがいないと 俺より”ちょっとレベル高いやつが”質問指摘できなくて おいしくないからさ^^; クソみたいな質問答えてる113はご満悦だろうね^^; クソがいないと俺TUEEEEEEEできないからね^^;
クソのおかげで、今日もお鼻が高いですよ
忍者コテ外すな
>>113 ってことは、関数を使って表現すると
while((!eof(FH) && (length($line) > 0)){ 〜 }
ってこと?
do while って使ったこと無い
関数作ったんだけど、自分自身がリストとして評価されてるのかスカラで評価されてるのか知る方法って?
thx
>>110 の言いたいことは
while(<>){
last if /^$/;
print;
}
でいいんじゃないかってことじゃないか?
...は被左演算子が真だったら被右演算子をテストしないって書いてあるね^^; 1行ずつ行を読み込んでるけど次のも読み込んでるのかな if(/<pre>/.../<\/pre>/) <pre> aaaa eeee </pre> <pre>にマッチしたら真になり ...は、被右演算子が再度でるまで評価しないってあるからさ aaaa eeee </pre>この3行読み込んでるですよ^^; みなさんわかりますか? 脳みそ足りてないからわからなさそうだけど
..2個だけだと評価しちゃうからダメですよ^^; if(/<pre>/../<\/pre>/) <pre> aaaa eeee </pre> まず<pre>で最初にマッチして 次読み込んだときに被右演算子が真の間ってあるので aaaaとマッチせず終了です^^; 意味わかりましたか?かすども..と...の違いが
まとめますと .. は 欲張りじゃない ... は 欲張り って覚えてください^^;
まちがってるしwww
あってるけど?^^;
猫オペレーターが使えると柔軟性が出て便利になるよね。 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
>>131 ある区切りの間だけ欲しくて区切りそのものはいらないって
よくあるからな。いつから入るんだっけ?
133 :
佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 15:47:06.34
いろんな演算子があんだね^^;
>>132 Perl 5.13.x(0〜10)のPerl deltaを見たけど、なかった。
だから今年の4月リリース予定のPerl 5.14には多分、入らないと思う。
というか、perl 5にneko operator入るのかな?
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までの行を出力するって それくらいわかるんだけどさ^^; 挙動教えてください^^;
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よめとかさ 読んでるんだけど もっと簡単に説明してくださいよ ね?^ー^;
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
「右被演算子が真である間」⇒「右被演算子が真になるまで」
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"; } 誰かなおして 直してくれた人のことを、感謝する
>>144 $dirの中身はどこから沸いて出てくるの?
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/の後の行が出力されてるって思ったら 真を返してたんだね^^;
>>151 こんなのもわからないの?
かわいそう・・・
153 :
佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 23:00:25.48
ミスってるマニュアルが悪いんだよ
どれどれ > 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
バカっていったこと撤回しろ
baka
160 :
デフォルトの名無しさん :2011/02/22(火) 00:26:34.86
救いようのないアホだな。 英語読めないバカが悪いって書いてるだろ? 自己申告で読めるって言ってるなら同意しとけば良いじゃん。
>>160 >>自己申告で読めるって言ってるなら同意しとけば良いじゃん。
日本語不自由なんですね、わかります。
あとsageてね白雉
162 :
デフォルトの名無しさん :2011/02/22(火) 01:48:51.12
都合の悪い時だけ鳥は付けないんですね。 わかります。
sage
sage
165 :
sage :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を比較して近ければ特定の返り値をかえす という感じに出来たら良いなと思っております
RAMディスクは却下なん?
167 :
デフォルトの名無しさん :2011/02/23(水) 19:45:59.49
てsと
>>165 CPAN で検索しないのは宗教的理由とかですかそうですか。
Win32::Screenshot とか使えそうなんじゃない?
ちょうど Image::Magic 使ってるみたいだし。
169 :
デフォルトの名無しさん :2011/02/25(金) 18:57:01.44
perlソースを短縮化するツールとかってないでしょうか? コメントだけとか空行だけ消すといっただけでもいいんですが、自分でやるとヒアドキュメントや 正規表現の途中だったり文字列途中だったり等々、ちゃんとしようとするとかなり難しくて・・・。
手作業でもすればいいんじゃないかな
>>169 自力で再発明することを勧める
そうすればperlerとしての次のステップが開けるはず
それかCPANで探す 探さないのは宗教的理由とかですか?
みんな、どんなHTMLパーサーつかってる? 私は、HTML::TagParserだよ HTML::Parserむずかしそうだったから使ってないよ HTML::ParserのほかにTreeBuilderとかあるけど みんな何使ってるの?教えて
正規表現でごりごり書いてる
<td>とかたくさん連続してきたら 正規表現でやるのめんどくさいとおもったの
えっ
ものすごくてきとーに書くけどニュアンスで受け取ってw <tr>(<td>(.*?)</td>)+</tr> でしょ? とくにめんどくさいってほどでも。。。
うんありがとう
既存のPerserってタグの対応が不整合なHTMLとかでもコケたりせずに解析したりエラーや警告出したりできるの? 現在WebにあるHTMLってかなりの割合でその手の壊れた代物が残っている感触なんだけど
>>178 XML::LibXMLで、recoverオプション付けるとか。
Linux機で、現在のIPアドレス、ネットマスク、デフォルトゲートウエイのデータを 得るにはどうしたらいいですか?
ifconfig
182 :
デフォルトの名無しさん :2011/02/27(日) 22:51:24.41
>>169 ですが、
perlソースを短縮化するツールとかってないでしょうか?
短縮しなければいけないんですか。空白があってはダメなんですか
182みたいなやつさあ すぐ人の真似する、なんか誰かが短縮してたりjavascript短縮してたりしてたからさ 真似して、僕もしたいみたいなやつなんだよ だからこういうやつすぐ人の真似してEmacsつかうやつだよ かわいそう
>>182 perl -MO=Deparse,-si0 hoge.pl
>>185 ありがとうございます。出来ました!
日本語が文字コードになって出てきますが、自分であとは調べてみます。
jsonをhtmlに変換するモジュールってある?
意味がわからん データ構造の表現にすぎないJSONをどういうHTMLに変換したいというのか
<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タグ取得できません教えてください
URL取得したいんです 教えてください 正規表現でやりますね
ヒント:LWP
WEB::Scraperのコマンドライン画面で コマンド履歴ってどうやって取得するの?おしえてください
できました
できました
できました
かみまみた
Haskellやってたんですけど 最近Perlはじめたんですけど 26個できました ちょっと苦戦しました
1. シジルなんて言葉は初めて聞いたw 8. デフォルトでレキシカルってわからん。回答にはmyって書いてあるけど、明示したらデフォルトちゃうやろ? 20. 例外なんてないだろw 22. たぶんfor(<FH>)とwhile(<FH>)の違いを言ってるんだろうけどfor(;$_=<FH>;)ならいっしょだよな
シジルは確か「初めてのPerl」に出てたぞ。 8.の「default」は、既定値にする、そのように初期設定する、的な意味合いだろうからmyでいいんじゃね? 俺はmyの使用を強制するuse strict(またはuse strict "vars")が答かなと思たんだが。 「How do you ensure that the default scope of a variable is lexical?」だし。
>>201 ラクダしかない時代から使ってるんで「初めてのPerl」は読んだことないやw デフォルトでレキシカルっていうとなんかuse lexicalみたいなプラグマで 宣言するとあとはいきなり出てきた変数が全部レキシカルになるようなもの をイメージしちゃったよ。原文読むとそうかなと思わなくもないけど だったらいちいちデフォルトとか書かんといて欲しいわ。紛らわしい。
4.ハッシュをリストコンテキストで評価すると得られるものは何か これ↑を、この↓質問にしたら、ちょっと難しい? ハッシュをスカラーコンテキストで評価すると得られるものは何か
nipotan:おれ、一度たりとも mala の苗字が岸本だなんて公言したことないぞ
http://bit.ly/bC7YG7 12:06 AM Aug 28th, 2010 nipotterから
mala:むかし酒の席で酔ったnipotanが「えー別にもう本名で活動しちゃえばいいじゃん」と俺の本名を発言したところ、
その場で例の契約が発動、nipotanをミンチにしてしまい、慌てて黒魔術で復活させた、という経緯があって呪力を抑えるために髪を伸ばしてる。
約2時間前 TweetIrcGatewayから
うそついてんじゃねえぞnipotan
嘘つきは泥棒の始まり
読み(ひらがな) うそつきは どろぼうの はじまり。 意味 うそを、平気でつくようになると、やがて、盗みも、平気でやってしまう、ということ。 解説 うそをつくことに、恥ずかしさや、悪いことをしているという意識がなくなり、平気で、うそをつくようになると、悪いことへの恥ずかしさや、罪悪感が、なくなり、 やがて、盗みも、平気でしてしまう、ということです。うそをつくことを、習慣にしては、いけないという、いましめのようです。うそをつくということは、 他人をだますことで、それは、人と人とのコミュニケーションを、妨(さまた)げる原因であり、基本的に、 うそをつくことは、いけないこと、であると知るべきと思います。 重要語の意味 嘘=「うそ」と読み、人をだましたり、ごまかす為に使う、本当でないことや、まちがったこと。 つく=うそや、悪口などを言う。 泥棒=「どろぼう」と読み、他人の物を許可なく、又は、だまして、盗み取る人。 罪悪感=「ざいあくかん」と読み、罪の意識を持ち、 悪いことをしているという気持ち。 罪=「つみ」と読み、@社会の決まりや、法律などをやぶること。 A宗教や、道徳などの決まりに、反する行為。
問題の意図がわからなくても、答えを見たら普通にソレをやってるって事や、意味は分かるって事が多かった。 名称なんて考えずに組んでるからなぁw
関数の、関数名だけが違うものを作りたい場合どのようにしたらよいのでしょうか? イメージとしては以下のような。伝わるかな・・。 #!/usr/bin/perl -w use strict; sub nihon{ print "日本¥n"; } sub japan = nihon; # これ!!! &nihon(); # "日本" &japan(); # "日本"
サブルーチンのリファレンスを受け取ってデリファレンスする方法だとこんな感じ #!/usr/bin/perl -w use strict; sub nihon{ print "日本\n"; } my $japan = \&nihon; &nihon(); # "日本" $japan->(); # or &{$japan}() # "日本"
その例のとおりに動かすだけなら *japan = \&nihon; あるいは sub japan { goto &nihon; } など。 両者の違いは自分で考えてくれ。
オブジェクトにすれば継承云々でやりたいことが出来そうな気がする 自分はやり方分からないけど、パッケージの勉強をしようとググってたとき、 質問者がやりたい事ができそうなサンプルが確かあった たしか、animal っていうのがあって、そこから cat だの dog だのが派生して。みたいなだったような気がする。 詳細は perl パッケージ とか、perl オブジェクト指向 とか、perl パッケージ 継承 とかでググってみて。
>>211 継承は継承もとのメソッドを使えるようになるだけ
同名のメソッドを定義し直すことはできるけど、
同機能のメソッドを定義することは別の話
つーかそんなことする必要性を感じないんだが
>>212 それいったら内容が同じで名前だけ違う関数を作ることだって
そんなことする必要性を感じないんだが
>>4 はオレが作った。文字コードに絡む同じような質問が多くてうざかったから。
元ネタは忘れたけど、例えば「use open IO」で検索すると、
詳しく解説しているページが見つかる。
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
教えてもらえるコツをおしえてください
おおゆうしゃよ、それをすてるだなんてとんでもない! というわけでコテ外せばいい
223 :
デフォルトの名無しさん :2011/03/04(金) 23:15:49.19
おしえてください 王様
sageも覚えました
本当に名無しでいいのかな??? 逆に教えてもらえなさそうだけど?
なにか質問しているのかな でも肝心の質問部分が自動あぼーんされてて読めんw
Perlがつくコテは糞しかいないだとか
糞尿に失礼極まりない
そうだったスマソ
>>220 伝説のPerl忍者ともあろう者が質問するレベルの難問とはとても思えない
釣りにしても稚拙すぎる
さてはとうとう鳥割れで偽物が出たのか
srand; $hello = rand; $hello < 1 and $line = $_ while <FILE>; $hello < 1 and $lines = $_ while <FILEs>; 乱数を初期化しているつもりなのですが 何回やっても 同じものしか表示されないのですが なぜでしょうか
わけがわからないよ
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"; } } もとはこんな感じでテキストの中身を一行読み取って出力させるやつなのですが 一番最後の行しか読み込まないのです。。。
for(1..100){print rand,"\n"} これを走らせて rand の返す値の範囲を見てみるんだ。
先に一冊薄いperlの本を通読した方が良いと思う。 アナグラムか何かかに見えるくらい不可解なことになっている。
無引数のrandの返す値は0以上1未満だから常に$hello < 1だよな。 何をしたいのかよく考えた方がいい。
俺が改良してやる。ちなみに現バージョンの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"; }
>>237 さん
ありがとうございます
無事に動きました
Perlではsrandでわざわざ初期化する必要なかったんですか
勉強になりました
>>237 まったくの徒労だったな。
> Perlではsrandでわざわざ初期化する必要なかったんですか
> 勉強になりました
無事に動いたよかったよかったで終わらせないで 自分の書いたコードとどこが違うのかよく比べて 勉強してくれればそれに越したことはないけどね
> Perlではsrandでわざわざ初期化する必要なかったんですか > 勉強になりました こちらも勉強になりますた! プログラマの中にはこういう理解を行っている人もいるんですね! 今後それらの人たちを見極めるために上のrand例題を使いたいと思います! 非常にスバラしい知見をどうもありがとうございました!! 感謝します!!!
>>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)); でよかったんだな。余談。
rand($.) < 1 and $line = $_ while <FILE>; が正しい、どっかのせっかちが写し間違えたんだろ
つまらんw 出直せ
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 %]を使えるようにしたいんですが教えてください
up.ttっつーテンプレート(HTML)中からリンクしている外部CSSファイルは ブラウザで表示される段階で初めて読み込まれる訳だから サーバ側でテンプレート適用するのはムリだろ どうしてもやりたきゃ <link href="./css/style.css" rel="stylesheet" type="text/css"> のすぐ下に <style type="text/css"> #aaa{ background-color:[% color %]; } </style> って入れとけば?
TTはHTML限定でもないんだし 外部CSSファイル用に別のテンプレートを用意して 別途そっちから出力してやればいいのではなかろうかと
ありがとう
246みたいなやりかたするよ
>>247 うん
Mojoliciousの読み方おしえてください
素直に読むならモジョリシャス かな?
フレームワークがどうしてもいやなんですが
やっぱり中規模あたりなアプリケーションはフレームワーク使わないと組めないでしょうか?
あとURLとかmojoやCatalystみたいに 日付でアクセスさせて認識させたいんですが
どうすればいいでしょう?
http://example.com/2011-3-7 みたいに
組めないことはないけど使ったほうが楽だと思うけどな〜。 ある程度慣れるのに時間はかかるのでその間は大変だけど。 なんで嫌なのかわからない。
めんどくさいんだよ まあしょうがないけど なれてナインだろうけど
学習コスト以上のリターン確実にあるね。 勉強兼ねてるんなら自前で良いと思うけど。
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 でパスを追加するとサーチパスの前に追加されるんですが、後ろに追加するにはどうすればいいんでしょうか?
use lib は自前で用意したライブラリの直前に書く 自前のライブラリは一番最後に書く 普通はこうだと思うから、先頭に追加された方がオーバーヘッド少ないのでは?
INIT { push @INC, () }
259 :
デフォルトの名無しさん :2011/03/08(火) 19:01:34.46
>>257 ,258
ありがとうございます。それで大丈夫でした。
サーチパスの後ろに追加したい理由は、Aというモジュールがそのサーバ上に無い
場合に、自分がアップしたファイル群の __modules とかなんとかのフォルダに置
いた所からロードしてもらおうかと思って。
サーバにあればそれを使って、無ければ __modules から使う・・、みたいな。
自己紹介乙
ここの2chのPerlのIRCないの?
知らない
いちいち知らないとか文字にださなくていいようざいから
Treeなんとかはコテつけろよ
265 :
デフォルトの名無しさん :2011/03/09(水) 14:57:56.85
use utf8; って use strict; 同様必ず全てに付けてますか? それとも、必要な箇所のみブロックで?
どうしても必要なスクリプトだけに
IRCの2chのやつ誰か
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に出力したいです。
どうぞよろしくお願いします。
2chのIRC教えてください
ありません
PerlのIRCどこがありますか?
DBIxでallで取得したフィールドのデータを無名ハッシュにいれて TTにおくって process('test.tt',$var);みたいに使いたいんだけど いちいち $res->all;取得したのを ハッシュに代入して $varみたいにやるの大変だから、もっと簡単にTTにおくるほうほうないの? おしえて
my $a={}; for($res->all) { push @{$a->{id}},$_->id; push @{$a->{title}},$_->title; push @{$a->{body}},$_->body; } 以外にやりかたない?・・・おしえて〜〜〜
2chのPerlのIRCってイミわかんないよな
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に取り込む方法おしえてください
もっと礼儀正しくして 一週間くらい我慢して待っていたら 誰か教えてくれる人が出てくるかもしれないが 保証はできないな
自分で精一杯だから教えてくれないんですか? やっぱりPerlのやつは忙しいっていうか自分オタクですね 自分オタク 全然教えてくれない自分オタクばっかりだな
教えたら自分より詳しくなっちゃうの困るんですね わかります
よくわかったな!
わざわざハッシュに入れ直さなくても$resそのまま渡して使えなかったっけ
お前がバカな質問してる事に気が付けば、俺は嬉しい気持ちになれるw
そして、教えると自分より詳しくなって 仕事とられたりする確立が上昇していくからいやなんですね^^;
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は検索結果とか入ってる奴です
「教えてください」「教えてください」を読んでたら 宮沢賢治の「ツェねずみ」を思い出した
288 :
デフォルトの名無しさん :2011/03/10(木) 13:17:37.22
ある文字列内に、特定の文字列が何個有るかを調べる場合はどのようにしたら 速いでしょうか? とりあえず以下を考えましたが他に速い方法ないですか? index関数を使用する方法もやってみましたが遅くて。 ----------------- my $text = 'あるないないあるあるある'; my $count = 0; while($text =~ /ある/g){ $count++; } print $count;
289 :
268 :2011/03/10(木) 13:23:54.69
>>272 >>272 ありがとうございます。ありがとうございます。
でも、空のデータが出力されます。
コンソールにも何も出ません。
何をチェックすればよいでしょうか
それに、一晩たって読み返してみると、
そもそも、元々のコードで
やりたいことが伝わらなかったように思います。
ttp://codepad.org/qh8dA7Qh にそって、やりたいことを次のレスに書きます。
290 :
268 :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";
291 :
268 :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 どうぞよろしくお願いします。
しょうがないからこれでやったよ my $a={}; for($res->all) { push @{$a->{id}},$_->id; push @{$a->{title}},$_->title; push @{$a->{body}},$_->body; }
イタタタタ
294 :
268 :2011/03/10(木) 14:05:35.05
動きました!!!!!!! my %annotate_data = () を%annotate_data = () にして、あとは出力を手直ししたら行けました。 お騒がせしました。
!!!大量につけててチョンみたい 謝謝!!!みたいに居たすぎる
>>295 居たすぎる、とかまともに漢字変換もできない奴は東アジア漢字文化圏からまとめて出ていけや
なんてね
WEBのやつってばかだからSQLわからないやつおおいよね
>>288 my $count = @{[ $text =~ /ある/g ]};
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; }, } );
と、いろいろやってみたがこのケースだと//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)
単純な切り出し、検索は 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ちゃんのスレに書き込むプログラム書いているのですが
文字が書き込まれないのですがどうすればいいでしょうか
Cookie の処理ってどうなってる?
304 :
デフォルトの名無しさん :2011/03/10(木) 18:23:28.95
>>300 ありがとうございます。
//g で普通にやったほうが速いみたいですね。indexとか使うとこの用途の場合は遅い・・。
305 :
>>302 :2011/03/10(木) 18:25:43.68
>>303 その辺のことはまったくわかりません・・・
hako=>[{num=>$var2->{num}},{name=>$var2->{name}},{body=>$var2->{body}}] }) if $n==3; しょうがないからこうやったよ。
ばかじゃかけないコードだね かわいそう DBIxからTTにおくってるよ あほはリファレンスわからないからわからないだろうけど
てsr
普通にlwpでやれよ
>>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% --
凄いことが判明した [% FOREACH i=[0..2] %] [% name.${i} %] [% num.${i} %] [% END %] ${i}みたいにやるとちゃんと配列取得できます name.iじゃなくて ${i}だったようです これで悩み画消えました
>>274 hashrefinflator使えば?
TTは勝手にメソッドかハッシュか判別して辿ってくれるから
ハッシュにしなくても大丈夫なはずなんだけど。
FW使ってもう一段上でblessされてたりすると判別失敗することはある。
hashrefinflatorっていうやつぐぐってみる
314 :
デフォルトの名無しさん :2011/03/10(木) 23:00:06.26
qwの中に , を入れたら以下のように怒られたのですが、 -------- Possible attempt to separate words with commas -------- セパレータとしてではなくホントに , を "," として配列に含めたい場合 qw の外で書かないといけないんでしょうか?
use warnings; { no warnings qw/ qw /; my @l = qw/ a , b c /; }
316 :
デフォルトの名無しさん :2011/03/10(木) 23:57:08.67
意図が良く理解できないんですが
>>316 「怒られた」んじゃなくて「警告が出た」だけだから、気にしなくてもいい。
やりたいことがちゃんと分かって書いてて意図どおりに動いているので。
でもPerlは「ひょっとすると書き間違いかもよ?」と警告を出してくれる。
「大丈夫、それはちゃんと分かって書いてるし意図どおりに動いているから」
ということをPerlに伝えるために、該当部分だけ警告が出ないようにしておく、
ということだろうな。qw/qw/で一瞬、ん? 何それ? となるかもしれないけど。ていうか俺はなったけど。
318 :
デフォルトの名無しさん :2011/03/11(金) 10:38:55.73
>>317 ありがとうございます。
no warnings でないとこの警告は止まらないんですね・・。
>>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
ln -s
認証サイトをつくりたいんですが どんなモジュールがありますか? openID意外でなんか教えてください データベースを使う奴がいいです、なにがあるでしょうか? 認証サイトをつくるときに使うアクセス制御のモジュール 教えてください
自分で作れ。パスワードのハッシュをデータベースに格納して比較するだけ。
そうだけどさ それでフォームから送られたアカウント情報とDBの比較してログインさせたらどうするの? ユーザー名とかグループによって見えるページかえたいんだけど 322の場合はどんなやりかたでやってる?
「体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践」 作者: 徳丸浩、出版社/メーカー: ソフトバンククリエイティブ これを読む。PHPベースだけど役に立つかも。 ちなみに俺は未見。
そんなのセキュリティのことだろ わざわざ書籍買う必要ない
ログインさせたら一意な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の状態ではしっかり動作します!
Catalyst::Model::DBIC::Schemaで生産したクラス名が bbsテーブルのばあいBb.pmになってたんだけど何でですか?教えてください なんでBbs.pmじゃないんでしょうか
>>328 そのエラーメッセージを読んで、どうすればいいか解らないわけ?
まあ、忠実に
>>4 に従えば、動くようになるかもしれないな。
DBIx::Class::Schemaをつかって作ったクラスつかおうとしたら 5000エラーでるんです index.cgiに use App::Schema;ってかくとエラー なぜ? mod_perl使ってからエラーがではじめました mod_perl使わないとエラーがでません ほかのCGIはエラーがでません use App::Schema;っ手各とエラーがでます App::Schemaは同じフォルダにあります 教えてください
ま た お 前 か
教えてください 精神が狂いそうです
多分カレントディレクトリが/usr/sbin/httpdとかになってて パスが通ってないんじゃないかな。 use lib 'index.cgiまでの絶対パス'; と書いて問題の切り分けをしてみれば?
そもそも「5000エラー」って何だ?
mod_perlが邪魔して多様です libとcwdつかってなおせました ありがとうございました
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'
339 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:26:14.03
gitはぶのつかいかたおしえてもらってもいいかな?
340 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:27:15.02
得するひろむ がなんとかするからほっとけよ
341 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/23(水) 21:28:21.72
俺は他力本願じゃないからな 別に、見て見ぬふりしてないしな 別に俺はそれを直すことがないから 指示待ちでもないしな
perlでGMTの求め方を教えてください
343 :
デフォルトの名無しさん :2011/03/23(水) 23:23:03.94
gmtime(time)
345 :
Perl忍者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ってでます
346 :
Perl忍者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みたいに でもできません 教えてください 助けてください 困ってます
347 :
Perl忍者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件ってかんじです
348 :
Perl忍者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)) じゃできませんでした教えてください どうやってスカラーコンテキストで評価して配列すうえられますか?$#みたいなのどうやってつかうんですか子の場合
349 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:32:03.81
if(scalar $p->book_review->all>0) が逆でした すっとぼけてました すみませんでした もうできました ありがとうございました
350 :
Perl忍者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でいけるとおもったんですができません 教えてください 配列にいれないとできないみたいです どうすればいいんでしょう教えてください
351 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 00:49:55.74
これ答えてくれたらPerl忍者やめます 教えてください
352 :
Perl忍者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
353 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 01:05:51.92
答えてくださいまってます
答えるべきなのか、スルーすべきなのか分からんが、 all[n]で取得できても次回の取得前にresetが必要だから意味がない 素直に「my @a=$p->book_review->all;」で取得するべき 逆に、一回しか使わないのであれば、SQLで絞り込むべき
>>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で調べてみようと思います
回答ありがとうございました
foreach $result (@{$yahoo_xml->{Result}}) { $click_url = $result->{ClickUrl}; print "$click_url\n"; } とやると@{$yahoo_xml->{Result}}分の回数実行されて数個URLが出てくるのですが これをforeachを使わずに一つだけ出すことってできますか?
$result = pop @{$yahoo_xml->{Result}};#前から取り出すならshift ってことをきいているんだろうか
$result = ${$yahoo_xml->{Result}}[rand($#{$yahoo_xml->{Result}} + 1)]; とか?
361 :
Perl忍者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とかつかえってことですか? 教えてください
362 :
Perl忍者lvl2 ◆M5ZWRnXOj6 :2011/03/24(木) 13:07:02.90
prefetch=>['book_review'=>'usr']じゃなくて prefetch=>{'book_review'=>'usr'} でしたすみませんでした解決しました
カス忍者うざいよ
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
366 :
デフォルトの名無しさん :2011/03/29(火) 14:00:04.22
Googleにいくなら 各言語の凄いやつらが エンペラーっていう団体立ち上げてそこにはいって Google潰してくれない?
367 :
デフォルトの名無しさん :2011/03/29(火) 15:59:23.62
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} 』だけが初期化される???
Perlの皆さん WebはPHP王に乗っ取られ システム系はPython先生に乗っ取られ 日本はRuby戦士の縄張りになってしまって 哀れなPerlerですね
>>371 localは変数の値をどこかにこっそり保存してブロックの最後で
元に戻すだけ、と理解するといいと思う。
374 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:08:34.33
Ruby戦士だもんな ださっ・・・トリッキーさとか、柔軟力とか、オールラウンドちっくがなさそう
戦士だから、術や魔法使えないしな
かわいそう
幅広く立ち回れないかわいそうなRuby
おまけにユーザーも頭悪いし 言ってることが馬鹿げてるよ
発言が、ぐぐればでること直接いってるだけの低能ばっかりだな
忍者たちを舐めないほうがいいよ
戦士とかださいしかっこ悪いしさ気持ち悪いんだけど お前の発言取り消したほうがいいよ
恥ずかしい発言だね君は
>>372 そもそも、Perlの真似してでてきたRubyがいきなり調子こきはじめて気持ち悪いよ
気持ち悪いもなにもOOに美徳感じてるハゲしかいねえ死ね
ごみみたいなアプリ作りやがって死んじまえ
375 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:10:29.89
なんかRubyの気持ち悪いゴミが暴れてるな 頭の悪い発言してたしったか君か
376 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 13:11:53.32
>>372 お前煽りかた下手だよ
気持ち悪いしね
糞みたいなRuby使って車輪の再発明してる雑魚なんですもんねあなたは
Railsつかってゴミアプリでも生産してろよ鼻くそ
てめえの作ったアプリなんて、身内しかつかわねえだろハゲ死ね雑魚
今すぐ消えろゴミクズ虫
377 :
Perl忍者 ◆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";
>>369 パッケージすら最近勉強し始めたばかりだからさ
ラジオボタンに使えるってのがイマイチ意味が分からない
>>378 レキシカル変数そのものはだめだけどハッシュの1要素だけとかなら
大丈夫みたいだね。俺も知らんかった。
my %hの下で、local %hはエラーになるけどlocal $h{a}はokらしい。
381 :
Perl忍者 ◆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 ローカル おまえばかだなあ ほんと俺でもわかるのに
382 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 17:07:34.47
医局かできんだよはげ
>>381 local ってグローバル変数に作用するんですよね・・?
384 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 19:51:59.26
myにもするけど・・・バカ?
385 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 20:05:59.45
Dumpして%main::みてみろよはげ
386 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/30(水) 20:13:08.09
シンボルテーブル理解してるか?だめなやつdなあ
>>384 分りました。そうなんですね。
ありがとうございます!
388 :
Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/03/30(水) 22:00:49.92
∠ ̄丶 〜|/゚U゚| ──╂∩0二) / ⌒i (_ノ^U レベルアップ
いやいや、そういや解決になってない・・・(>_<) レキシカル変数に対して、 local $h{a}=30; local %h; 上が ok で下がなぜ NG なのか。 そういう風に仕様が 『 決まってんだよ 』 って言われればそれまでですけど。
>>389 スクラッチパッドという伝説の世界が開かれたから
my @a; $a[0]=20; {local $a[0]=50;} print $a[0]; どうやら配列でやっても同じなようだな
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 を使いました。 これは認められていません。 同じ名前のパッケージ変数をローカル化したい場合は、 パッケージ名で修飾してください。
localって自動スワップアウトしてくれてる って認識なんだけど間違ってる? sub{ local $i = 10; ... } ↓ sub { my $tmp_i = $i; $i = 10; .... $i = $tmp_i; # デストラクタ }
my $h; $h=100; {local $a;} これがダメなのは前にmyで宣言してるってことが関係あんだろ? our $h; $h=20; {local $h} localはグローバル変数の値を別の場所にやんだろ my %h; my %a; なんでmyなのに$a[0]と$h{x}でlocalが使えるってことはこの二つがグローバルってこと 俺は知ってるけどおめえなんかに答えおしえねえよかす
すなおにperl-casualできけよはげ
>>394 単純に、local は自分のスコープ外の変数に関して作用するのかな? と最初思いましたが、
これでは local %h で %h がグローバルなら ok でレキシカルなら NG の理由が説明できない。
今必死にバックグラウンドでぐぐってるよPerl忍者たちが
いや。 忍者でもなければ、おもくそフォアグラウンドでぐぐってる。もう寝るけど。
単に、localの対象がグローバル変数だけってことじゃないのか。要するに仕様ってだけで。 perl 5以降myが使えるからlocalがグローバル変数のみ対象で誰も何も困らないってことで。
おまえらちゃんとマニュアル読めよ。perlsubに書いてあるぞ。 いくつかの種類の左辺値もローカル化できます : ハッシュと配列の要素とスライス、 条件文(その結果が常にローカル化可能なもの)、シンボリックリファレンス。 単純変数に関しては、これは新しく、動的スコープを持つ値を作ります。 しかし値の待避と復帰と考えるとわざわざレキシカル変数を除外しなくてもよかった ような気はする。
そうなんですね!
WEB+DB PRESS Vol.61 P171 の local の記述で、「グローバル変数」 とあるのに
サンプルのコードがレキシカルだったのがきっかけで質問したのですが、
そういう仕様・・ということですね。
>>396 で書いたみたいな仕様だと分りやすいのに。
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にセットしてください。
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を先に持ってきたいんですが アルファベット純になってしまいます どうすればいいんでしょうか? ハッシュ宣言の順番のまま使いタイんですが たすけてください
順番邪無くても平気でした
なんかイライラするなその誤変換ほったらかし こういう誤変換が平気な人は普段からコーディングミスも多そうな気がするが偏見かね
だってぼくはは怠慢だから
$hoge = scalar ref $self のscalarって何のためにあるんでしょうか
組み込み関数のrefはコンテキストで振る舞いが変化するようなことはなく 文字列しか返さないから何の意味もないと思うぞ。
>>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';
いwwwwwまwwwさらuse utf8にかえようとかわめいてんのかよww なに?ウインドウズでやってるの?
お、なんか汚ならしい草がいっぱい生えてんな
416 :
411 :2011/03/31(木) 19:58:54.12
今更って、もう既に最初っから use utf8; するのが主流? 俺はまだ必要な場合と箇所にだけ使用してるんだけど・・。
ドシロウトウズ
ドシロウトじゃねえよはげ utf8が主流だからwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwww use utf8;つけないとダメだろwwwwwwwwwwwwww あとuse strict; use warnings;
perlはウインドウズにむいてねえよw Linuxつかえ 文字コードめんどくさいから 色々めんどくさいウインドウズ 手間がかかる
windows は ウインドウズ って書くのに Linux は リナツクス って書かないんですね。 ウィンドウズ ウインドウズ
>>418 おまえは use w; も付けなきゃダメだろ
そんなのあんのか? ネタなのか本当なのかわからないな
Acme::W あったし・・・
use utf8 すると色々面倒くさいから俺は外したよ
面倒くさいっていうのは例えば?
ここのサーバーで廃人プレイヤーMiyagawaを単騎で倒した方はいますか? レベル45Perler ステ振りは、モダン特化です
LWP の挙動が変わるところとか
かわらねえよwwwwwwwwwwwwww wwwwwwwww wwwwwwwwwwwwwwwwwwwwww wwwwwwww つりかwwwwwww わろすwwwwwww
utf8にすると、使うメソッドが変わることがあって面倒。 別クラスにしてくれって思うことがある。 バイナリで扱うのが楽といえば楽だ。
CPANにアップしてるやつばか? なんかさ ばかじゃねえの?ドキュメントだけ(笑) 視覚的なものが無いよね SYNOPSだけ リンク先とかはって 見本とかみせろよ こう表示されるとかスクリーンショットとかわかりずれえんだよ そんな説明文だけのやつ使うきにならん
これ↓だと、うまくいくけど、 my %h = map { "pre_" . $_ => 1 } qw(a b); こう↓するとエラーになるのは何故でしょうか? my %h = map { "pre_$_" => 1 } qw(a b);
>>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
質問者じゃないけど、、、 勉強になった。map EXPR, LIST って書き方を知らないけど。
>>432 直後の文字が何の時にどっちで解釈されるのかいまいちよくわかんないのだが。
例で
EXPR: "
BLOCK: + ( lc
というのはわかったけど、書いてみてエラーになったら直すしかないんかね?
>>436 ブロックの中身が単純すぎるせいで { がハッシュリファレンスの開始と捉えられている。
%hash = map { key => 'value' } @array のような変換は
%hash = map +(key => 'value'), @array でいいし、map BLOCK より map EXPR の方が速い。
こんな書き方もあるのか!
実際の呼び出し前に、サブルーチンの定義を記述するのと、 プロトタイプのみ宣言しておいて、後で中身を定義するのって、等価だよね?
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 "★エラー = $!";
use strict; use utf8; use Encode; … open my $fh, '/dev/null' or die encode('utf8', "エラー "), $!; とか? (うちの環境で$!は日本語を吐かないので$!部分は未検証)
リテラルではないから付かないほうが自然ではあるけどねえ
早まった。うちでは
>>441 で何も問題なく表示されるや。($!は当然英語のまま)
>>442 ありがとうございます。参考にします。
>>443 そうですね・・。これリテラルじゃないや。
ファイルへの入出力はレイヤでだいぶすっきり書けるけど ファイル名とかコマンドライン引数とかはいちいち encode書くのがだるい。なんかいい方法ないのかな。
ういんどうずなんですか? それじゃたいへんですよ あきらめてください
あきらめたらそこで試合終了ってえらいひとがいってました
今日のCPANモジュールの本 CPANモジュールガイド ただいま予約受付中です。 だからかわない じゃあね 買えるURL教えろ
450 :
デフォルトの名無しさん :2011/04/04(月) 11:12:20.34
local::lib ってよく見聞きするんですが、なにがイイんですか?
>>450 root権限でインストールされてるPerlでも、
ユーザ権限で自分の環境にCPANモジュールをインストールできるところ。
Macのmacportsで入れたperlだと mobilecatが動かない portsで何か余計なもの入るから? 全部perlのcpanツールで入れれば大丈夫なの?
otsuneはPerlの糞文法に10年以上も苛まれ続けた結果、 あそこまで性格が悪くなってしまったという説を唱えるRubyエンジニアがいるのですが、 彼の言っていることは正しいのでしょうか 質の低い文法が一人の男の人生を狂わせ、 周囲の人間にまで多大な迷惑をかけてしまっているのだとしたら、 そんな悲劇を僕は直視することができません otsuneがもしPerlよりも先にRubyに出会っていたとしたら、 彼の人生はもっと豊かになっていたのではないでしょうか 周囲の人間も迷惑を被る事は無かったのではないでしょうか はてな村はもっと晴れやかで爽やかで前向きなコミュニティになっていたのではないでしょうか そう考えると僕は胸が苦しくなる 夜眠れなくなる
shtmlのフォームからcgi(perl)に変数を送り、別途置いてあるcsvデータから 該当する物を出力するものを作っているのですが 出力するときはhtmlなのですが、その際の拡張子は「.cgi?name=いろは」みたいになっています。 ところがサイトメニュー等も一緒に出力したいので、SSIも同時に使いたいのですが 拡張子がshtmlで無いとダメなサーバー仕様なので、検索結果出力の際の拡張子をshtmlにするには どうしたら良いでしょうか?
↑すみません、質問板を間違えました。板汚しすみません。
#!/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. ってでるんですけど どうすればいいですか?おしえてください
Parse::AccessLogEntry って LogFormat が 決め打ちだからそれに合わせた LogFormat じゃないので 時間が入ってるはずの部分を split できずにエラー吐いてるのかな。 Parse::AccessLogEntry は50行程度なので自分が使ってる LogFormat に合わせて修正して使えばいいのではなかろうか。 ちなみに自分でやるときは split か Text::CSV_XS でパースしてる。
>>453 何か、2chに変なのが沸いてると聞いてきたんだが、オマエは何なんだ?
オレに言いたい事があるなら、ネットでの活動ネームなど添えるなりして書き込んでくれ
言っとくが性格が悪くなったことなんて一度もない勝手な風評を流すと罪に当たると言うのは知っているよな?
発言の語句からすると、akiyan臭いが用があるならchat.freenodenet #perl-casualまでどうぞ
もちろん本物は淡々とヲチしてます
ほ ん も の だ け ど な に か ! ? ! ! !!!!!!!!!!!!!!!!!!!!!
2chの偽がオモシロすぎる 約1分前 Twittperatorから
性格悪くなんてなってないよな別に 元からだもんな
462=内部人間 内部の事情をしってるやつ
内部人間あらわるあらわるー
誰? 誰が書き込んでんだよ!!!!!!!!!!!!
>>あそこまで性格が悪くなってしまったという説を唱えるRubyエンジニアがいるのですが、 Rubyエンジニアってだれだよ
LL事件簿みたいなの作れよハゲ おもしろくて毎日みるよ
んなそのへんのおばさんの会話みたいな話なんぞどうでもいい。
技術の話だとついていけないから面白くないんだよ。察してやれよw
470 :
デフォルトの名無しさん :2011/04/07(木) 17:40:59.13
ショッピングカート作ってるんだけど、 カゴに入れた商品を削除するにはどうしたらいい? ・・・ってこんな質問の仕方じゃアレかもしれんけどw なにか思いついたレスお願いします。
普通にdbから消せよ
472 :
デフォルトの名無しさん :2011/04/07(木) 18:39:14.60
データベースから消すの? それは違うんじゃない? 注文内容をひとつひとつデータベースには登録しないかと。
サーバサイドで保存するサイトもユーザのクッキーだけに持たせとくサイトも両方あると思うが
474 :
デフォルトの名無しさん :2011/04/07(木) 18:56:25.25
クッキー不使用のものを考えています。 サーバーサイドで保存ということは、カートに入れた情報を一時的にサーバーのファイルに保存するということ? それだと、利用者の数だけファイルを作ることにはなりませんか? 今はフォームのhiddenで先のプログラムへ渡す手法を考えているのですが、一度カートに入れた商品を削除する機能で悩んでいまして、、、
なんで1ユーザー=1DBなんだよ
カート使用にデータベースは使わないかと。 使うとしたら商品一覧等のデータ格納くらいじゃないの?私はCSVファイルでやっているけど。 クッキーかhiddenで受け渡すか、サーバーで一時記録にファイルを使うのは上手くないかと。
セッションつかえよ ファイルっていっても少しだろ?バカかハゲ 期限きれたら削除させればいいだろはげ どうせお前みたいな2chに書き込んでるハゲが1ヶ月数万PVもとれねえだろ なめてんのか?雑魚
やっぱり、回答が神の一手ですね忍者さんは
amazonとかはデータベースに保存してるみたいだけどなぁ
自問自答乙
>>477 セッションって?
カート使用でサーバーサイドでファイル作るの?
ちょっと重いと思うんだけど本気?確かにさしたる時間はかからないけど。
月だと3万PVくらいかな。
それでも売り上げは出てるよ。まだまだ少ないけど。
>>479 売り上げの記録は当然記録してるでしょう。私もそうしている。
今言ってるのは、一度カートに入れた商品を取り消す作業をプログラムでどうやるか、だよ。
カートに入れられた複数の商品から指定商品だけを除外するにはどうしたらいいか。
カート内みたいな一時的なデータもセッションIDと紐付けしてDBに保存なんじゃないの? hiddenなんかにしまったりした日にゃブラウザの履歴いったりきたりで矛盾が生じて ロクなことにならんぞよ CSVファイルだのに保存していちいち読み書きしてたらオーバーヘッドで鬱陶しいから DB使うんじゃないの? まあオレはDBなんて使ったことないけどさ〜使う機会いままでなかったんで
hiddenで状態遷移を次へ渡すなんてのは十数年前の初心者の頃に俺も書いたことあったっけな。懐かしい。
「ブラウザの「戻る」ボタンは使わないでください」って全ページ冒頭に注意書きを表示してな。
当時はDBもバカ高い商用DBしか選択肢がなくて、データの保存は都度ローカルファイルへ書き出し。
お客さんが滅多に来なかったからそれでもなんとかなってたっけ。
>>482 は十数年くらい前の時代からタイムスリップしてきた俺かもしれない。
>>485 今それを真剣にやってるところなんだよw
今の最先端のやり方はどういうやり方なの?
>>485 ちょとまて?おかしくないか?
今、書店で売ってるPerlCGIの書籍でも紹介されてるくらいだと思うけどなあ。
それに、ECサイトのカートでPerl使ってるとこは多いだろうし、
だとすると作り方にそう多くの手法選択肢もないわけで、
hiddenが10年前の手法とかっていうのも違和感あるなあ。
今の最先端カートはどういう手法を使ってるの?
ブラウザのcookieにはユニークなセッションIDのみ保存する セッションIDはユーザや買い物に関する情報は入れずに ただセッションを区別するためだけのものとする 容易に類推されたりしないよう作成すること このセッションIDとユーザ固有IDなどはサーバ側で必要に応じて(セッションの都度)紐付けする 買い物情報やユーザ情報は変更・遷移も全てサーバ側のDBに格納する て感じ? 識者の補足訂正を乞う
Archive::Extract なり Archive::Zip を使って 中身が文字列の zipファイル を展開して 展開された文字列をファイルを作らないで そのままスカラー変数に放り込みたいのですけども どうしたらいいのでしょうか?
文字列のzipファイルてのは初耳だ
491 :
489 :2011/04/07(木) 21:34:58.35
>>490 言葉が足りず申し訳ありません
ひとつのテキストファイルを zip に圧縮したものを
展開してそのままスカラー変数へ放り込みたいのです
Perl/CGIなんていう名で出てる書籍はたとえ2010年出版でも内容は2000年以前なんだろうなと想像する
まあ、Perl/CGIに限定するならそんなに変わってないだろうしな。 サブタイトルとかで列挙されてる分には分からんが。
最新のカートCGIではどんな技術が使われてるの?
できた・・・ どうやら、一度カートに入れた商品の指定商品だけを削除することができた。。。 hidden使用です。クッキー使用可にしていないブラウザ使ってる人ってどれくらいいるんだろう? 考えなくてもいいくらいに微々たるものだったらあれだけど、 とにかく、クッキー使えないブラウザでも利用できるカートにしたかったのね。 とりあえずできた。まあ、ちょっと心配あるけど。 これからは必要事項記入して全てのデータをメールで顧客と店舗に送る機能の作成に入ります。
それと、ちょっとスレチかも知れないけど、perlのカートつながりで、 SSLって使わないとどういうことが起きるのでしょう? 盗聴されるっていうけど、そんなことがどうしてできるん?
> SSLって使わないとどういうことが起きるのでしょう? > 盗聴されるっていうけど、そんなことがどうしてできるん? うわ〜 そんな程度の知識レベルでカートの仕掛けなんか作ってんのか〜 コワイわ〜 ていうか完全にスレチだな
>>489 一時ファイルを使えない理由でもあんの?File::Tempとかもあるだろうに。
>>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;
適当にでっちあげてみた。
501 :
489 :2011/04/08(金) 01:06:48.66
>>500 ありがとうございます。無事に出来ました。
contents で members の中身のどれかを伸長したデータにアクセス出来たんですね。
Archive::Zip を改めて perldoc してみるとちゃんと書いてありますね…orz
インターネットがバケツリレーだから。
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だとできませんでした
自分でそういうソートするvmethod定義するか [% PERL %]つかってごりごりやるかじゃないかなぁ。
[% PERL %]っていうやつはじめてしりましたよやってみます
[% PERL %] my $host=$stash->{yml}; print "$_: ",scalar @{$host->{$_}},"<br>" foreach(sort {@{$host->{$b}}<=>@{$host->{$a}}} keys %$host); [% END %] できました ありがとうございました
>>503 HTTPはハガキ。配達段階で内容は丸見え。
HTTPS(SSL)は封書。配達段階で内容を盗み見るのはかなり困難。
なおSSLの証明書の種類によってはこれに加えて発信者の身元証明も兼ねる。
>>509 素晴らしい!^^
でも、はがきや手紙の場合はわかるけど、
ネットの場合は盗聴するなんて想像もつかない。
どういう方法で盗みみるの?
511 :
509 :2011/04/08(金) 17:01:16.33
>>510 自分で調べろ。ググれ。もしくは自分で該当スレでも探せ。もしくは痛い目にあってからでないとわからないんならとっとと痛い目にあえ。
スレチなのでこの話はここまで。
>>494 の件
やっぱりおかしいよ、
>>485 は。
十数年前のやり方だからどうだと?古いといいたいんだろうけど、今も多くのカートCGIで現役では?
hidden使うってどういういみ? 意味分からない 教えてください
最近低レベルな事が分かりません 高レベルなことやりすぎてるので
cookie 受け取れない端末のために、セッション ID を URI に含めなきゃいけないのが面倒くさい
hiddenを使うこと自体は方法として当然ありだろうさ。 そこにセッションIDではなく状態遷移情報そのものを埋め込むのが手法としてダメだつってるの。
>>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;
でも良いかもね
Spreadsheet::ParseExcelでB1セルのセルの色を知りたいです。 $cell = $sheet->{Cells}[0][1]; $color = $cell->{'Format'}->{'Fill'}[1] で得られましたが、もうちょっと見た目きれいに取得する方法はありますか?
>>518 等幅の綺麗なフォントで
$cell = $sheet -> { 'Cells' } -> [ 00 ] -> [ 1 ];
$color = $cell -> { 'Format' } -> { 'Fill' } -> [ 1 ];
わあ、きれい!
521 :
デフォルトの名無しさん :2011/04/09(土) 00:29:58.41
みんな、アプリケーションの開発はどんな風にやってますか? やっぱり、一行なら一行足してみて動作確認て感じでちょっとずつちょっとずつやってますか?
あたりめーだろはげ どばってやりたくないからなエラーのショックとかがでかいから
よかったw 自分のやり方が特異でなくてよかった。 忍者殿も一行ずつテストしながら進めてるんだね? けど、そのやり方だとあまり大きなプログラムは作れないのでは?
まだ大きなプログラム作る必要が無い 小回りの効く暗殺タイプだからおれは
あら。 これは意外。 ってことは、今のところさほど大きなプログラムは作ったことないの?
今はテスト駆動開発だろJK 俺はやったことないけどな
PHPをバカにするために僕もPHPはじめますね 比較対象する言語を一つくらい持ってないとPerlと他の言語のよさが見えてきませんからね
他のプロセスのメモリ覗いたり弄ったり出来るモジュールありますか
バッチファイルに放り込まれたファイルの パスを拡張子だけ抜いて指定場所に書き込みたいのですが、 \の処理がうまくいきません どう記述するのが正しいのでしょうか? perl -Mencoding=cp932 -pe s/"Filedpn"/"%~d1\%~p1\%~n1"/ template.avs > "%~n1.avs"
532 :
489 :2011/04/10(日) 09:06:15.84
>>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が許せない・・・・
> ククク・・・・クククククク・・・・・
> クックックックックックックッ・・・・・
> クー、クー、クー、クー、クー、クー・・・・・
>
> もう許せない。
> もはや沸き上がる滅意を抑えることが出来ない!!!
>>513 おまい…
基礎からやりなおせよw
>>515 ケータイとかでは必須だよな。
サーバーサイドに一時的に記録して
万が一戻って実行してもエラーが出ないように対策するのが面倒だよな。
>>522 過去に自作したプログラムをサブル−チン化させているので
組み合わせながら自作してるよ。
>>523 それなりに痛い目にあってるんですな〜w
>>535 セッションIDってパラメータのことね?
?の後に○=○&○=○&○=○って続ける値のことね?
サブルーチン化、なるほどね。
ひょっとして別ファイルにして読み込んで使うこともしてる?
あれって最後の . を忘れただけで動かないんだよなw
537 :
Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/13(水) 09:32:49.64
>>535 hiddenのどこが基礎なの?
おい言ってみろよ
バカにしてんのか?
hiddenなんて低レベルなことやったことねえんだが?
だいたい説明してみろよ
hiddenっていうやつをよ セッションで管理とDBで管理してるからな俺は
セッションIDってパラメーター(笑)
お前釣りなの?
クッキーとして保存されてんだろバカかアホ
?○=○&○=○&○=○がパラメータだろ
セションIDはほぼハッシュ化されてんだが?わかる?低能
ウェブアプリケーションを 作っちゃいけないレベルの知識の人が 作ってちゃってるのはオソロシイね そもそもこのスレでは ウェブアプリケーションプログラミング関係は スレ違いでないの?
>>537 hiddenはperlどころか、htmlであり、
htmlはperlより先に勉強するでしょやっぱり。
「基礎」という考え方もわからなくはないよ。
>やったことない
それもまた・・・
それと、なにをそんなにムキになってんだ?
午前中から。
よほど追い込まれてるかな。
540 :
Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/13(水) 12:13:04.00
注文フォーム(かご) 『かごに入れる』方式の注文CGIです。 ここではかごに入れる部分だけの処理を載せています。かごに入れるという仕組みは、hiddenパラメータを使います。hiddenはもう何回か出てきましたね、CGIではクリックするたびに、それまでのデータは消えてしまいますから、 hiddenを使ってリレーのようにデータを渡して行きます。 お前も低レベルなことやってんだな・・・ こんなゴミみたいなことやってないが お前も低レベルな初心者なんだろうな ただパラメータを引き継がせてるだけだろハゲ
541 :
Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/13(水) 12:14:06.08
買い物カゴの処理をきいてる時点で雑魚 スレ違いだから死ねよ
>セションIDはほぼハッシュ化されてんだが?わかる?低能 運悪くセッションIDが衝突したら 他の人が買った商品を自分が買ったことにされるんですね、わかります
まともな生成法のセッションIDが衝突するのよりは明日地球に隕石が衝突する可能性のほうがまだ高そうだが
544 :
Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/13(水) 13:42:34.73
バカは放置
>>540 最新のカートではどうやってるんだい?
perlでやってるならスレ違いではない。
>>545 >>1 >CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
頼むからテンプレぐらい読んでくれよ
PerlでHTMLファイルを処理すること自体は、この板でも特に問題ないってのが また分かりにくいんだろうなあ
なんで糞コテってバカのくせに偉そうなの?
馬鹿だから
一応は4コマの歴史が変わったエポックメーキングな作品であるのに、 影響受けるのが怖くてあずまんが大王が読めない、とかわざわざあとがきでアピールするのは確かに ちょっとヤラシイかな、とは思う。
誤爆にも程があるだろうw
そこを何とかPerlに繋げるんだ
あさぎ「よつばちゃん、ぱーるはもうオワコンなのよ」 最近遅ればせながらRuby試し出したけど、結構いいねこれ。特にブロック。 学習曲線としてはPerl知っているならすぐ覚えられるので楽だからみんなも使ってみればいいのに。 楽道とかわけわかんない方向にまで付き合ってもきっと後がないよ。
セミコロンで終わらない言語はクソ 以上!
そもそもあずまんが大王ですらない; それはよつばとだ;
いいかよつば: 俺はセミを捕らせたらプロ級だぜ: 略してセミプロだ:
それはセミコロンですらない、コロンだ。
すなわち、だるまさんだ。
そなたは達磨大師では無いのか?
だるまさんがコロンだ。
564 :
デフォルトの名無しさん :2011/04/15(金) 06:02:36.80
うさたん大王なのか
$str = 'ABCABCABC'; ・$str =~ s/AB//; →CABCABC ・$str =~ s/AB//g; →CCC はいいけど'ABCABCC'にしたいときはどうすると簡単? オプションにもなさそうだし・・・ 文字列の後方から一致文字列を一つ置換したい。
"$str = 'ABCABCABC'; $str =~ s/(.*)AB/$1/; print $str; #ABCABCC
d!!!!
無理だ・・・ 実際には複雑で下みたいな感じなんだよね。 $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/; なんかもうよけいに変になった・・・
>>568 $siftstr =~ s/(.*<th.*?)tb_day(.*?)$print(.*?th>?)/$1tb_day_ex$2$print$3/;
未検証。
ていうか「(.*?th>?)」は「(.*?th>)」じゃないの? まあどっちでもマッチするっちゃするだろうけど。
あるcpanモジュールをインストールするのにコンパイルが必要か それとも.pmだけコピーすれば動くのか、どこ見ればわかりますか?
>>570 そのモジュールのソース
モジュール名の最後が PP (Pure Perl) ならコピーだけで動く可能性が高い
pythonのnumpyに相当するような 逆行列とか固有値分解とかしてくれるモジュールないですか
flockを使った排他ファイル制御を簡単化してくれるモジュールないですか データベースとか使いたくないんです
糞malaは最近XSSとか馬鹿の一つ覚えのようにわめいているが いつからセキュオタになったの?きもいなあ
何できもいの?
mala忍者はセキュオタになってもセキュオタに勝てないからきもいの おとなしくPerlでもやっとけよもじゃもじゃ
malaってあいつ逆立ちしたらチン○なんだろ? 髪の毛がチン○ 髪の毛から足がチン○ そういうことか だからもじゃもじゃ髪の毛のばしてるのね
malaの由来=男性器 髪の毛から上がチン○ 髪の毛がチン○
flockとかだるいからDBに行くんだよな。慣れると楽ちん
おれもそう思う。
flockなんて使うのか?くそそうだな
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からロードしてました。 一般ユーザは変なところから(自分のローカルディレクトリから)ロードしてて、なにか失敗してるし。。。 。。。。。。。。
こんなふうに配列にハッシュを代入してみたところ問題なく動いたのですが、こういう書き方はマズいのでしょうか? @array{"test"} = "test"; print @array{"test"};
>>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'
};
CGI::APP が素敵すぎる Catalystなんて奴、使う奴の気がしれない
そんな餌にひっかかると思ったんですか?バカチョンが
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以外の言語圏へのポータビリティーがなくて美しくない
Mojolicious::Liteが流行じゃないの?
$hoge =~ s/A-/TEMP/; @hoge = split(/-/$hoge); $hoge[0] =~ s/TEMP/A-/; というようなことをしたいのですが、TEMPのところはどうするのが最適なんでしょうか? $hogeの中には適当な文字列が入ってます。
>>595 普通は実態参照とか使って文字列に入る可能性のある
文字はスプリットに使わないけどな。
ってか、gオプションが付いて無いところをみると
なんでもどうとでもいける気がするけど・・・
1、$hogeに入りえない文字。
2、パスワードみたいな適当な文字列。
3、正規表現を使って"A-"は置換しない。
>>596 ありがとうございます。
2の方法で他の方がどんな文字を使ってるか、
もしくは一時的に置いとくための特殊な文字があるのか知りたかったのです。
>>593 面白いモジュールあるね。
win32限定で作るのなら、いいかも。
>>595 @hoge = split(/(?<!A)-/, $hoge);
これでダメなの?
>>597 >一時的に置いとくための特殊な文字
特殊変数はあってもそんな文字は無い。
適当に英数字10文字選んでも天文学的な数でまず被らない。
ってか使いたい置換後の文字列を事前に検索チェックして
もし被っていたらハッシュでもかけて動的に変えればいいじゃないか。
ありえないけどまさかの無限ループにならないように一応回数の
上限決めてエラーの道も作っておけばよい。
>>598 >>599 ありがとうございます。
とりあえず正規表現で行くことにします。
検索するという発想はありませんでした。
>>597 > 一時的に置いとくための特殊な文字があるのか知りたかったのです。
読み方も解らない、意味も解らない、出典も解らない漢字がJISコードにある
(従って、Unicodeにも含まれる)から、それを使えばいい。
「幽霊文字」でググってごらんよ。
>>601 想像してたのと少し違いましたが、やっぱりあったんですね
勉強になりました
え、幽霊文字って単に漢字分類の一区分であって文字コード的には普通の漢字とか他の文字と何ら違わないでしょ。 たとえば$hogeがユーザーが任意に入力できる文字列だとしたら、事前に払っておかない限り普通に入り得る。 「TEMP」とか使うのと変わらん。
perlのプログラムをメモ帳で書いています。 文字コードはUnicodeにしたいですが、Ansi以外で保存してブラウザで実行するとInternal Server Errorと出てしまいます。 PerlはUnicodeでプログラムできないのでしょうか。
HTMLで一つフォームを持ったページを作りました。文字コードはUnicodeです。 「パソコン」とフォームに記入し、別のCGIにフォームの内容を送信します。 受け取ったCGIで受け取った内容を見ると、「パソコン」ではなく%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3になってしまいます。 これを「パソコン」に戻す方法はありますでしょうか。なお、このCGIもUnicodeで書きたいです。
URLデコードすれば戻せます。 なお、CGIの話はWEB プログラミング板でどうぞ。
607 :
デフォルトの名無しさん :2011/04/21(木) 01:07:13.98
去年のYAPC::AsiaでJesseが今年の4月に 5.14だすよーって言ってたはずだけど何時出るんだろ? 詳細なリリーススケジュールを誰か教えて!!
調べてないけどRC1が昨日出たらしいから割とすぐなんじゃないの?
609 :
デフォルトの名無しさん :2011/04/21(木) 01:22:29.56
ユーザー入力(例えばクエリ送信)できるのか出来ないのかが問題。 未使用仕様関係なくコード入力されたらダメじゃん。
my @ary = %hah; でそのまま配列に変換できるけど、 これは両方とも中に入ってるのがリストだから、受け渡し可能なんでしょうか?
>>611 そんなものは、事前にチェックして、
「不正な文字コードが含まれています」とエラーメッセージを出して終わればいい。
>>613 ちょっと前のレスから読み返せよ。
恥ずかしい。
>>612 ハッシュはキーと中身が隣同士に並んだ配列だからね。
5.8使うのが一番無難なの?
何か事情があって新しいのが入れられないという場合以外で今さら5.8を使う理由は思い付かないな バージョン5.<偶数>.<整数> の範囲で一番新しいのを入れれば普通問題ない
えっ 5.<偶数>.<小数> なんてバージョンもあるのか…
>>616 本体は最新の安定版をを入れといた方がモジュールの依存解決が楽。
スクリプトは 5.8.1 で動くよう書いた方が無難。
CentOS に標準で入ってるのが 5.8.x 5.12 にしたいなぁ。。。
>>620 システム使う Perl とは別に
/usr/local/bin 以下に入れればいいんでない?
やっぱそうゆう対応しか無いですよね。。。 でもなんかさ、1行目に 「local」 って入るのがなんか好きじゃないwww
623 :
デフォルトの名無しさん :2011/04/22(金) 07:20:03.08
624 :
623 :2011/04/22(金) 07:21:56.67
書いてる途中でポストしちゃった perlbrewで好きなバージョン入れて シェバングは #!/usr/bin/env perl これでいいんじゃね?
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);
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 ; } }
>>628 関数amari3の返り値でなく、$_と比較しないといけないので、
when ( &amari3($_), 0 ) { say "3の倍数" ; continue }
ちなみに一回目のwhenは普通ifだろう。
いやいやそもそもwhenって何? whileに脳内変換されてた。 使ったこと無いや・・・
低レベルなクソスレだなここは
高レベルはべつにここで質問しないからな。 理解できないのかな?
given-whenがswitch-caseか・・・ when ( ! /^¥d*$/ ) { say "数じゃない" } when ( 0 == &amari3($_) ) { say "3の倍数" ; continue } この二行だけ見て早とちりしたよ。
カスばっかりだなここは
>>626 sysopen()でO_DIRECTを使うことができれば、できるかも。
メモリをcacheに取られたくないなら、OSの設定で制限しておく方が簡単だと思う。
>>628 ついでに
when( ! /^\d+$/ ) { say "数じゃない" }
637 :
628 :2011/04/23(土) 20:32:00.89
>>630 さん
お返事ありがとうございます。あの本独特のアメリカンジョークに耐えながら孤独に勉強しているので、お返事うれしいです。
自分的にはifとかの方がわかりやすいんですけど、問題がgiven-whenを使えって指示だったので・・・すみません。
>>636 さん
ありがとうございます!!本しっかり読み直して確認しました!!
1個以上ってことですもんね。
638 :
628 :2011/04/23(土) 20:41:57.39
>>629 さん
ありがとうございます!!馬鹿なのでまだ理解できていませんが
考えるヒントを頂いたと思って、本と一緒になんども読み返します!
やばい given-whenなんて構文今初めて見た なんでこんなヤヴァいこと誰も教えてくれないんだ どこのperlサイトにも載ってなけりゃ rubyにすらないだろこんな構文 一体誰が得するんだ ラクダ本読んだ人間を見分けるための秘密のおまじないかよクソッ なんて世界だ 歪んでいやがる 俺はperlにはなれない
自分も given-when を初めて知った。 switch-case は break だけど、 given-when は continue で再評価できるのか。
低レベルすぎ・・・・
ペッペッ クソスレ ガシンガシン
perl 5.8 で動かない構文を使うわけにいかない (>_<) javascriptでも他ブラウザ対応で面倒くさいのに perl でも似た問題が発生するのは避けたい・・。
笑える
まぁ、while で囲って if で同じ動作できるから、別に使わなきゃ!って意思は無いけどね。
質問してる奴は問題で構文指定されてるって言ってるのにメクラだから見えないのかね? 「俺は別のやり方でやるから(キリッ」
>>647 別に質問した人にgiven-whenを使うなとは誰もいってないだろ
given-whenを今まで知らなかった人が今後使うべきか使わざるべきかいろいろ考えてるだけだ
なに余計なものまで見えちゃってるんだ君は
650 :
628 :2011/04/24(日) 20:44:46.70
>>649 むちゃくちゃよくわかりました!!!
ご親切に本当にありがとうございました。
書き込んでいただいた内容はコピペして、ソースコードに
勉強した内容として貼付けておきます。
コメントくださった他の方も、ありがとうございました。
ようやくなんとか初めてのperlを読み終わりました。
最後辺りはシェルの知識が足らずに???の連続でしたが。
練習問題に、プログラムの動作イメージみたいなのをつけて
くれたら、問題としてどういうものを作らなきゃいけないのかが
わかりやすいのに、と思いました。
ま、僕の理解不足ですね。精進します。
UNIXコマンドの file のような ファイルタイプを自動判別する Perlモジュールってあるんでしょうか?
Windowsのコマンドプロンプトで >perl -wl -e 'print 10' と打つと Can't find string terminator "'" anywhere before EOF at -e line 1. とエラーが表示されるのですが、Windows版PerlってLinux版みたいに -eオプションが使えないんでしょうか?
perl -e "print 10" perl -e 'print 10'
>>654 >>655 サンクス。
うまく行きました。Windowsのコマンドプロンプトの問題ってことなんですかね?
>>651 ありがとうございます。
とりあえず File::MMagic を使ってみる事にします。
require Exporter; our @ISA=qw/Exporter/; our @EXPORT_OK = qw(hello bye); この場合、require Exporter;をつけると書いてあるのですが require Exporter;を書かなくてもhelloとbyeが使えるのは何故ですか? SYNOPSISなどにはrequire Exporter;を宣言していますが 教えてください。
>>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
660 :
658 :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も使えています バグですか?
>>660 LWP::SimpleがExporterを継承しているから、それをさらに継承したら
いろいろ余計な物もついて来ると思うがExporterも継承したことになる
ってとこじゃないかな。余計な物を触らない範囲ならなんとなく動く。
662 :
658 :2011/04/25(月) 19:34:06.19
とりあえずモジュール作るときは use base 'Exporter';やっとけばいいですか?
オブジェクト指向で、Exporterが要らない世界に行こうぜ。
->() で使うこと前提なら、 Exporter 要らないんだよね?
$obj->method(); Class->method(); これなら不要。 Package::function(); 普通のサブルーチンコールでも、パッケージ名をつければ不要だけどね。
Foo.pmにimport関数がなかったら Exporterのimport関数がよばれるってことであってますか? Exporterのimportを継承するってことですか? Foo.pmでimport関数を書くとオーバライドされてしまうってことであってますか?おしえてください
そしてuse Foo.pm ってやったら BEGIN{ require Foo; import Foo LIST; }ってことですよね? ここのimportはExporterから継承したimprot関数ですよね?
ありがとうございました 分からないことあったらまた聞きます
第二の封印が解かれました 悪鬼羅刹が沸いてきたぞ・・・!準備はいいか?! nechoneko mopemope が暗殺リストに加わりました。
初心者です 質問させてください。 最初に書く#!/usr/bin/perlと#!/usr/bin/perl -wの違いは何なのでしょうか? 大学では-wをつけるように言われたのですが、ウェブでみていると何もつけていないことの方が多いように感じます。 よろしければ教えてください。
たぶん Warning message
モジュールじゃつかえねえだろたこ モジュールだと#!/usr/bin/perlってかかないから -wが使えない だから use warnings;使うんだよたこ
-w よりも -W をオススメ で、w は細かい警告を出してくれるので、開発時は付けていた方が良い
$hoge = 'a.b.c.1.2.3'; $hoge =~ tr/0-9a-zA-Z//c; で $hoge -> 'abc123' にしたいのですが、うまくいきません。trの文法で何か間違えていますでしょうか?
>>675 $hoge =~ tr/0-9a-zA-Z//cd;
678 :
675 :2011/04/26(火) 16:25:44.43
>>676 ありがとうございます。
いつもs///gで置き換えてたので勉強になりました。
ああExporterはサブルーチンを呼び出すときでしたか モジュールで使えるメソッドの場合はよかったんでしたね
書かなくてもいいよ。ただしそれをCPANには上げるなよ。
それすら判断できないならCPANに上げるな。 マジで。
686 :
Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/27(水) 12:27:24.60
糞もジュールあげまくっていいよ
687 :
Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/27(水) 12:29:52.64
685が言ってることは嘘だから そこまで重要視されてないよtestは
688 :
Perl忍者lvl4 ◆M5ZWRnXOj6 :2011/04/27(水) 12:33:20.68
あんなマメにTEST やってるの日本人くらいだけだから
>>658 はい、ケースバイケースですね
模索してみます
糞モジュールは誰にも使われず廃れるだけ
最初は少なくてもいろいろ問題が出るたびにそれが検出できるような テストケース追加していくとそのうちびっくりするような量になったり するな。
Perl忍者はカスの真骨頂だから、コイツは無視でいいよ
いじめ、カッコ悪い
藁
PSGI Application書くためのframework探してるんだが、 どれ使うのがベターなんだろうか。 なんかどれも帯に短し襷に長しな感じで、 どれがいいのかサッパリ分からん。 ちなみにPythonではFlask使ってる。
Tie::IxHash;いちいちやるのめんどくさいんですが 全ての変数に適応するやりかたってありますか?おしえてください
Ruby新車きめぇ
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';とやっても表示されないですし
くそでえすねPerlは
>>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}++;
}
>>701 ありがとうございます
ちゃんと表示されました
凄いなPerl忍者
さすがperl忍者
やるなperl忍者
レベル高いな データ構造も理解しオブジェクトを理解しているとは 別人の忍者か?
こいつは別事のPerl忍者か 凄いなPerl忍者
umask でファイルのパーミッションを705にする方法ありませんか?
わかりません
しんぱい 入りません
umask 022; で644にはできるんですけどね… 755や705にはできないっすかね〜
真のperl忍者ならわかるけどな
Perl忍者惚れた
ぐぐれば666ってでてきたのに chmodつかえとしか言いようがない
>>695 Flaskがいいなら、Dancerはどう?
>> 682 そのモジュールは、複雑なモジュールなのでいっぱいテストが必要なだけで、数の問題ではない。 十分に動作が保証される程度にテストがかかれている必要はある。 テストがあまりにもすくない場合は、英語で長文でDISられるのは覚悟しておいた方がよい。
719 :
695 :2011/05/03(火) 15:33:44.72
>>717 Dancerか。何となく似たような系統ぽいね。
一回試してみるわ。ありがとう。
720 :
デフォルトの名無しさん :2011/05/04(水) 17:57:22.95
サーバー側でDirectoryIndexとかにindex.cgiを設定した上で$ENV{'PATH_INFO'}
perl で CGI 書くとか凄いな。 C とか CPP じゃないんだね。
いやむしろちょっと前までCGIでの使用率圧倒的だったろ。
CPPってなんだ Cのプリプロセッサかい
CGI 自体は、普通 Perl で書かれていない。 ということが言いたいんだよ、多分。
cpp eq c++ これぐらいも分からないのか・・・
>>726 じゃ「C とか C++」って書けばいいじゃん
これって何ていう用法なんでしょうか? $hash{"a", "b"}
@hash{"a", "b"} のことなら、スライス
>>733 ありがとうございます。
それがスライスではなく、$でした。
jcode.plにある記述です。euc2sjisは関数です。
$convf{'euc' , 'sjis'} = *euc2sjis;
>>732 それは、多次元ハッシュ。但し、現在は推奨されない。
>>736 ありがとうございます。
そういう名称なんですね。
非推奨ですか、了解しました。
そのハッシュの使い方、カーニハンの『プログラミング作法』のマルコフ連鎖のPerl 実装で効果的に使われている例があるな。
まじで? 分かりやすくて便利なのになあ
>>738 知ってると思うけど、$hash{foo}{bar} のようにすれば、
多次元ハッシュ(であるかのように見えること)は実現できるよ。
>>739 どうなんだろうか。Perl5デスクトップリファレンスに
「現在は推奨されない」と書いてあったから、その通り書いただけなんだけど。
>>742 表示出力をファイルにリダイレクトして実行した場合、双方何秒になりますか?
>>743 今さっきからPerlをやり始めたのでやり方がわかりません・・・。
C++のほうも2時間ぐらいしかやってないのでファイル出力の仕方はわかりません・・・。
じゃ ループ内の printとcout行を1+1;に書き換えて実行したらどうなりますか?
$hash{a, b}と$hash{a}{b}って等価なん?
% 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, }; 何コレおもしろい
>>745 乗算のPerlは20秒で、
乗算のC++は0.3秒ほどでした。
除算のPerlは28秒で、
除算のC++は0.8秒ほどでした。
Perlは変わってないように思えますが、
C++は劇的に変わっていますね・・・。
なぜこのようなことが起こるのですか?
750 :
749 :2011/05/06(金) 03:56:45.01
printf が高機能だから、出力した場合ではPerlに負けたとか・・・?
触って数時間の人が比較しても、正直なんの参考にもならん…
752 :
デフォルトの名無しさん :2011/05/06(金) 13:00:46.38
>>749 なぜだろう から全ては始まるんですよ。 この先、開発という作業は、この なぜ の繰り返しになります。
その理由を見つけた人が報酬を得られるわけです。
ちなみに
>>749 の理由、このスレの人らはみんな分かっている事なのですよ。
C用の練習問題を流用して 素因数分解するコードを書いてみました。 foreach に使う配列の要素数を Math::BigInt で扱う巨大な整数にしたら Range iterator outside integer range と怒られてしまいます。 foreeach じゃ BigIntな要素数の配列は扱えないのでしょうか?
755 :
754 :2011/05/06(金) 15:55:36.49
>>754 自己解決しました。
use Math::BigInt した上で foreach文 の代わりに C風の for文を使えば行けました。
foreachって全部メモリに読み込んでから処理するからダメなんだっけ? foreachってことはループ回数数える必要がないってことだから、whileでもいいのかな
値が大きすぎると、カウント出来ないっつー問題がある。 foreach(100000000000..100000000001){ print "number: $_\n"; } 結果 Range iterator outside integer range at ... 他のループ構文で避けるのが吉だけど、 マジカルインクリメントで避ける裏技もある。
驚異の26進数
値が大きすぎると、というのが漠然としすぎているというか整数型超えてれば当たり前じゃないの?
レンジオペレータは、内部の整数表現を超えた値を扱えません。 変数で表現できる整数ならば他のループ構文が使えますので、そちらを使いましょう。 例: for(my $i = 100000000000; $i <= 100000000001; $i++){ print "number: $i\n"; }
>>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 で定義されてる。
$i = 100000000000; while( $i <= 100000000001 ) { print "number: $i\n"; $i++ } とも書けるけど、 for文と while文ではどっちが良いのかね?
昔こう聞いた事がある。 while:回数未定 for:回数指定 条件が数行とかでdo使いたい場合以外は ほとんどfor使ってるね。
>>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 日本語で頼む。
ってか、CGI.pmに限らないPerl文法的は解説が聞きたいんだけど……
ちょっとは読もうとしてほしい… 別に文法的に特殊な意味はない。CGI.pm の場合は $cgi->header('application/octet-stream'); みたいな渡し方もあるからそれと区別するための目印に - を使ってるってだけ。
>>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>
>>770 CGI.pm「が」区別するための目印だよ
>>769 すみません、そのレスに気づく前に
>>770 の書き込みしました。
>実際には、最初の引数だけがダッシュから始まる必要があります。 最初の引数にダッシュがあれば、CGI.pm は後のものにもダッシュが あるものとします。
これPerlの文法という仕様は関係ないんですか……
何がなんだかよくわからない
ハイフン付けて区別するって、そんなことできるんですか。 ハッシュのキー名にハイフン付けてもいいというわけじゃないですよね?最初の引数だけダッシュがいる、っていう話だから。 やっぱりよくわからんw なんでそんなことができるんだ
Perlの文法関係ないって言われましたけど、Perlが文法的にそういう書き方をOKしてなきゃできないことですよね。 連投すみません
>>772 それはたとえば、
(-type => '...', -attachment => '...')
じゃなくて
(-type => '...', attachment => '...')
でもいいよって意味。
CGI.pm は第1引数(ハッシュとして見れば最初のキー)の1文字目がダッシュかどうかで引数をどう扱うかを決めるけど、
見た目の統一のために2つ目以降のキーの先頭にダッシュ付けても同じように処理するよということ。
>>773 「ハッシュのキー名にハイフン付けてもいい」んだよ。
(-foo => 'bar') ('-foo' => 'bar') ('-foo', 'bar')
Perlからすればこれらは3つとも同じ意味。その後それをどう処理するかは CGI.pm 側の問題。
>>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
};
>>775 ハイフン付けてもいいんですか。それなら納得です。
でも、スカラ変数名でハイフン使うのには制限あるっぽいのに、ハッシュのキー名では普通に頭にも使えるってなんじゃそりゃ
もう一つ質問いいでしょうか?
print $cgi->a({href=>"hoge.html"}, "hoge");
これ、中かっこはあるとないとで、どういう違いが生まれるんでしょうか?
ハイフンのときとは違って、かっこは後ろの方にもあるわけですし
これはPerl文法的な作用が何かあるんじゃ…と思うのですが。
>>769 のページにも説明が書いてありましたが、
>CGI を使い始めたばかりの人の多くが、HTML タグ属性を囲む中かっこを必要とする HTML ショートカットの呼び出し方と、
>中かっこ無しに属性の生成を管理する他の ルーチンの呼び出し方との違いに惑わされます。 混乱しないで下さい。
>便宜上、中かっこは HTML を除くすべてでオプションです。
>もし好むなら、名前付き引数を取るどのようなルーチンでも呼び出すときに 中かっこを使えます。
あんまり説明になってないorz
>でも、スカラ変数名でハイフン使うのには制限あるっぽいのに、ハッシュのキー名では普通に頭にも使えるってなんじゃそりゃ 考えてみれば、ハッシュなんでどんな文字使おうが自由なのは当たり前ですね。失礼しました。
CGI::Util::rearrange のコードを読んでみれば第1引数の頭のダッシュの扱いは 別に不思議なものに見えなくなると思う。 ちまちま有無をチェックしたり削り落としたりしてるよ。
とりあえず、今ある疑問は解決しました。 ありがとうございました。
782 :
デフォルトの名無しさん :2011/05/07(土) 23:24:00.15
どうしてelsifにしたの?
elseのあとの { } を強要したから
>>782 use diagnostics;
elseif
elseif should be elsif at ...
(S syntax) There is no keyword "elseif" in Perl because Larry thinks it's
ugly.
そういやパール兄弟っていたよね。
どうせなら最大限に略してefで良かったんじゃね?
配列のソートなら @a = sort @a; でできるのですが、 スカラコンテキスト内の文字列のソートはどうやれば実現できますでしょうか?
@a = sort split //, $s ;
$s = join "", sort split //, $s ;
>791-792 ありがとうございます。 おかげさまで正規表現でのマッチが簡単に行えました。 splitやjoinを使うのですね。参考になります。
www::mechnaizeでファイルをDLするコードを書いたのですが、 ループ回数をprintしても、何も表示されずに、プログラムが終了するときに、 一気に表示されるのですが、 これはどういう仕組みでこうなってしまうんでしょうか
ソースが無いと分からんな codepad使ってみて どういう仕組み、と言うか自分で書いたものそのままの仕組みだと思うよ
$| = 1;
バッファリングですか。ということは、 print 'a'; print 'b'; ターミナルにabと表示されるのは、速すぎて一瞬で表示されてるわけではなくて、 1回で書いてるんですね。(データサイズが大きいと違うみたいですが) ソース乗せなくて申し訳ありませんでした。
>>797 それは1回で書いていてなおかつ速すぎて一瞬で表示されているんだと思う。
$|=1;
print "a";
sleep 10;
print "b\n";
で「$|=1;」がある時とない時を比べればわかりやすいかも。
mapの結果に対してリファレンスを得て、それを別の配列の要素として入れたいのですが 一時変数を作らないと無理でしょうか? 今はこうしています: my @tmp = map { ... } @ary; push @results, \@tmp; これと同じことを1行で書けるのでしょうか、無理なら諦めます
push @results,[map{ ... }@ary]; ではどうか
>>800 なるほどぉぉぉぉぉ!!!!!目から@が落ちました!
ありがとうございます!
map { [$_] } てきとーに書いたから間違ってると思うけど、map で返すときに [] で括ればいいようなきがすう。
違うよ全然違うよ
mapを[]で囲んだら何になるの? map剥き出しのそのままじゃダメなの?
mapを [ 〜 ] で囲んだ場合、[ 〜 ] 内がリストコンテキストだから そこにmapみたいなリストを返す式を書くと結果が [ 〜 ] 内に展開される …みたいなイメージで合ってますよね、たぶん
うはリファレンスか 物凄い勘違いしてた 配列や何やらのままだと []で囲まないとダメだよな 笑って許してくれ
リファレンスとかこいつ聞く質問じゃねんだけど 基礎中のきそなんだけどここはPerlの質問だから帰ってください
my @tmp = map { ... } @ary; push @results, \@tmp; @tmp=();これやったら 配列もハッシュもそうリファレンスを消したら @resultに入ってる値は全部きえるけどな
オブジェクトで新しいインスタンス生産しないと ループさせて\@tmpいれても @tmpでループごとに初期化されるから\@tmpのリファレンスがループごとに消される わかりますかね?
なるほどクソみたいなバグの発生場所なのね じゃあ[map{....}@ary]は無名配列の無名リファレンスってわけ? @resultsから[map{....}@ary]をpopするとその@tmp分の配列の領域はどうなっちゃうの? 漏れる一方? それとも@resultsを初期化すれば@tmp分のそれぞれの領域も解放されるの? されないよね?
@resultからpopして得られるのは無名配列へのリファレンスだろ push @results,[map{ ... }@ary]; push @results,[(1,2,3,4,5)] と同じ @resultsを初期化したら@tmpの領域は開放されない @resultsに@tmpsのリファレンス入れてるだけだから
配列って言うより無名のリスト
っていうことは\@tmpでも[map{...}@ary]でもどちらの方法でも、 @resultsからは常にメモリがダダ漏れでザル、と。 popの度に手綱が行方不明になって、最終的にシステムは落ちる……
結城浩の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などが数字にならず、ループもちゃんと回っていないようです。 何が悪いのでしょうか?
>>816 ふざけてんのかw と思ったけど、よく見たら解答が見えたわ
もう歳かな
>>814 my @rangeがハッシュリファレンスになってる。
そこの括弧は{}じゃなくて()
夢がケントってのはひどいなw
>>813 popして得たリファレンスを特に保持しないと、参照されなくなるのでPerlが自動的に開放してくれませんか?
どうみてもケントはネタ
>>823 その通り
相互参照とか参照のループでも作らない限り
Perlのシステムはそのへんちゃんと面倒みてくれる
忍者の頭では理解できてないようだけど
まあ夢がケントじゃ無理もないかね
>>823 君は Perl メモリ管理でぐぐったほうがいいですよ?!
その手のデータ構造を殺せる正規の関数がほしい。 perlでふつうに書くととんでもなく遅いよ。
なにいってんだこいつwww 理解してないのはおまえだろ自作自演してる脳タリンwww
>>828 わかってないのはあんた。
>809を自分でコードを書いて動かしてみろ。
上書きされんだけど わかってないのはおまえだろ 知ったか乙
カウンター狙った質問とかせこいっすよ シュシュシュ 対抗できるように、ぐぐって事前に反論の準備ととのえてるんっすよね?シュシュ どこまで知識があるか探るときに使う手法っすよね シュシュ
while(){ my @tmp = map { ... } @ary; push @results, \@tmp; } とかでループさせたら @tmpのリファレンスは上書きされてるってことなんだけど わかったかね?クソバカ
/ ̄ ̄ ̄`⌒\ / ヽ \ | _,___人_ | / \ ヽ / |/ / / ̄ ̄ ヽ, / ', / _/\/\/\/|_ \ ノ//, | 《・》 《・》 i ,ミヽ / \ バーカ!! / \ / く(6| ,(、_,)、 |6)ゝ \ / \ / /⌒ 'ヽ トェェェイ / ' ⌒\ \  ̄|/\/\/\/ ̄ (  ̄ ̄⌒ ヽ ヽニソ/ ⌒ ̄ _) ` ̄ ̄`ヽ /´ ̄ | | −−− ‐ ノ | / ノ −−−− / ∠_ −− | f\ ノ  ̄`丶. | | ヽ__ノー─-- 、_ ) − _ . | | / / | | ,' / / / ノ | ,' \ / / | / \ /_ノ / ,ノ 〈 \ ( 〈 ヽ.__ \ \ ヽ._> \__)
つまり、@resultsには一つの配列(@tmp)への参照がwhileした分だけ入ってるってこと?
>>833 数行の動くコードも書けんのか。本当にグズだな。
それだけと入ってるけどtempのリファレンスが上書きされちゃうっすよ!シュシュシュ!
クズの相手はこれまでですね理解してないようですので
>>834 自分で数行書いて試せばすぐわかること。
>>838 忍者さんが使用しているPerlが私の使用しているPerlと違うような気がしたから聞いたんだよ。
きっとperl忍者専用の特殊な仕様なんだね さしずめ忍者perlといったところか
低脳 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忍者 の言ってる事が正しいかもね。 キュフフ
Perl忍者さんの釣りにすごい必死になってレスつけてるひといますね かわいそう
発 者 同 . 。_ ____ 争 生 同 .じ . /´ | (ゝ___) い .し 士 .レ .__/'r-┴<ゝi,,ノ ro、 は、 .な で .ベ ∠ゝ (ゝ.//` ./`| }⌒j .い し .ル } ⌒ /`ヽ、_∠l,ノ ・ヽ´ .! ! か の / ´..:.} >、、___, .r、 ソ、`\ / ..:.:.} / |∨ ` ̄ / ..:.:./ | 丶 / _、 ..:.:.:.{ .{.:.:. \ { ..:Y .ゝ、 {.:.:.:.:. ヽ |、 ..:/ 丿 .:〉 >.- ⌒ . ヽ / {. ..:./ ソ ..:./ .( ..:.:.:` ..:} ./..:.:}.:.:./ ヘ、 ..:./ .\ ..:.:r_,ノ、.:.:} ./..:.:/|.:/ {.:./ X.:.:}.} X X /..:.:/ .}.:| }:/ .Y丶ヽ Y.:Y . __/.:/ { } 《.〈、 _,,__>.:》丶 Y.:\ /.:.:.:.:.::/ !.:.:ゝ ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ \.: ̄>
Perl忍者さんはよく釣ってましたね @tmpは上書きされると釣っていましたね undefすれば別なんですが さすがですね忍者さんは
忍者さんの釣りも、巧妙化しつつありますね
つか確かトリップキー割れてんじゃなかったっけ、Perl忍者って
へーそうなんだ ということは割れてるトリップを本人も使い続けてるのか それともトリップ使ってる奴は全員ニセモノなのか
いくら割れてる鳥を使ってもその個性は消せない。 本人以外の人間が騙ってもその発言で忍者と分かってしまう不思議を忍者は持っている。 正負どちらの方向にせよ。
元々複数人で使ってる鳥
Perl忍者やってるやつは、そゆって人かな
[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忍者: おかっぱ?
常駐プログラムを作るときの注意事項を教えて 心配してるのはメモリを確保・解放してるタイミングなので そこに絞った注意事項でもいいです つーか、いつ変数が確保されるのかよくわからん
Perlはメモリについて意識しないでいいようにできている Perlはメモリについて意識しないでいいようにできている Perlはメモリについて意識しないでいいようにできている Perlはメモリについて意識しないでいいようにできている C齧りさんは帰っていいっすよ Perl使いはCやアセンブラできて当然なので いちいちメモリがどうたらとか話しませんよ勘違い君
メモリとかこいつ全然Perlしらなすぎ
>>853 ありがとう
スコープを外れた変数は普通にGCに回収される
って解釈でよいのね
,
>>855 真ん中のがたいへん参考になりました
Perl はスクリプト終了時に開放じゃなかったっけ? delete しても開放されなかったような・・・
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 '.$$;
結果は: 最初の状態 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
そんな低レベルなこと披露しなくていいから ゴミみたいな基礎勉
>>858 OSに返すかはfree(3)の実装依存ではないだろうか。
OSにメモリ返さなくても、再利用さえしてくれれば 気にしないです。
Perl忍者が教えるPerl忍法みたいなコンテンツのサイト作ってくれないかな?
あまったれてんじゃねえよカス
テメーが低能なのが自らにも否定できなくなったら自演レスか。 くだらないことやってる時間があったら本でも読めよ。 いくらググってテメーにとって意味がわからんものはわからんまま終わるんだよ。
常駐プログラム作ってる低脳がわめいております
何このスレ… 循環参照や参照しっぱなしがない限り、普通はメモリを意識しなくていいよ。 もちろんデータ量がGB単位になってきたら別だけど。
メモリの話するやつってCからやってきましたっていう自己紹介アピールするのと同じっすよね ど素人丸出し
Perlやってるやつは、ほぼC系できるから安心してね低脳 口に出して言わないだけだから
CができなくてPerlをするって、XSもわからないしPerlのソースコードも読めないからPerlの素人って宣言?
なんだ「Perlをする」って?意味不明だぞ
Perl忍者より日本語がおかしいバカがわいてるね
そういや昔はfjで「ネットをする」とかおかしいと気が狂ったみたいにわめいていた奴いたなあ。
きもきも
ここもPerl忍者プログラムが常駐してくそになりましたね
この流れはASテクノロジー
Arcadia Saga
880 :
デフォルトの名無しさん :2011/05/15(日) 12:47:01.25
5.14.0 キタ━━━━(゚∀゚)━━━━ッ!!
882 :
デフォルトの名無しさん :2011/05/15(日) 12:55:05.20
eval { local $SIG{ALRM} = sub { die 'timeout' }; alarm 10; `sleep 30`; # 時間のかかる処理 alarm 0; }; alarm 0; こういうよくあるタイムアウト付き処理をおこなうとき タイムアウトが起きても「時間のかかる処理」のプロセスが 残ってしまうことがあるんだけど、これをタイムアウト時に きっちり殺す方法はありますか?
Class::Singltonに my %args = @_ && ref $_[0] eq 'HASH' ? %{ $_[0] } : @_; な記述があるんだけど、 最初の@_ &&って意味あるのかな
>>882 fork execして、プロセスIDを適切にkill。
>>886 use warnings;していると、引き数が無いときに警告が出る。
888 :
886 :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; }
Perl忍者って具体的にどんな人のことを指すの?
【秘密】を持っている
身体全体がイカ臭い人のこと
c++で、 cin >> p >> d1 >> d2; こう記述した場合、 100 200 300 という入力があれば、 P = 100, d1 = 200, d2 = 300と格納されます。 数字を空白区切りで入力したい場合、 Perlでも同じようなことができますか?
my ($p, $d1, $d2) = split ' ', <>;
>>894 ありがとうございます!
($p, $d1, $d2) = split / /, <>;
でなくて、
> ($p, $d1, $d2) = split ' ', <>;
というやり方でもいいんですね。
split / /, <>; と split /\s+/, <>; と split ' ', <>; とで少しずつ処理(結果)が違う。面白いね。
>>897 入力時、行頭や行末にスペースを入れたり、
間のスペースを複数(2こ以上連続)にしてみたりすると
違いが分かる。
C++での、 while( cin >> n && n ){ ・・・ } という書き方は、Perlではできませんか? 1行でです。
>>898 本当ですねw
何でこうなるんでしょうかねぇ
>899 while( my $n = 0+<$fh> ){ }
>>901 ありがとうございます。
どこでそういう知識を得たんですか?
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; } とか書いた方がいいな。
C++ の方がシンプルに見えるのは例外処理を省略したコード例だからだな。 警告とか気にしないなら901のコードでも動くっちゃ動く。
>>902 …とまあどーでもいいことを延々考え続けた結果だよ。知識とかじゃない。
>>900 ・\s は [ \n\r\f\t] と同じ。
・splitで最大要素数(第3パラメータ)を略した場合、後の方の空要素は捨てられる。
・' ' でsplitした時は、/\s+/ と同等の処理に加えて先頭の方の空要素も捨てられる。
というか行頭のスペースは無視して処理される。(そういう仕様)
いつのまにか Perl 5.14.0 が出てた…orz
そりゃyacc/lexで簡単にできることはそっち使った方がたいてい楽だよね。 適材適所。perlのつかいどころも使ってりゃそのうちわかるよ。使う人の 能力依存という面もあるけどな。
grep+sed+awk+ちょっとしたプログラミング、くらいの用途のときに凄い楽だと思う それ以上はモジュール頼りになりがちだけど
数値として認識させるためでしょ
>>912 <>から入力されたのが数字でも、数字と認識しないんですか?
入力の最終行じゃなければ普通は \n で終わる文字列でしょ それより $num+$str は use warnings の numeric が有効になってれば警告出るはずなんだけどな
あ、$num+" \t\r\n" とかは大丈夫なのか
5.14.0 で CGI を 3.54 にアップグレードしようとしたら、 FCGI の 0.71 で Makefile が作れずに引っかかってしまった…orz。
>>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 の開発版の一番新しいのをインストールすれば良いんでないの?
918 :
882 :2011/05/18(水) 13:40:31.36
>>887 なんらかの結果を取得することはできますか?
920 :
919 :2011/05/18(水) 18:05:30.97
うーむ、ブロックされるかどうかは環境依存だった。
キミが韓国に居るからだよ^−^
文字列ソートを教えて my @a=('aaaa.001', 'aaaa.002', 'aaaa.003'); my @s = sort { my $tmp2 cmp my $tmp1 } @a; # print "@s\n"; ってやっても、降順にならないよ ><
my @a=('aaaa.001', 'aaaa.002', 'aaaa.003'); my @s = sort { $b cmp $a } @a; # print "@s\n";
>>923 sortの時は$aと$bを使うってお母さんに教わらなかったか?
>>925 $a$bを使ってるのを一度見て変数なら何でもいいって思ったんだろうな
foo barみたいな?
Math::Random::MT って明示的に乱数種を渡さないといけないみたいなのだけど、 渡す乱数種を /dev/urandom から持って来るにはどう書いたら良いのでしょうか?
rnd でふと思った VIA の PadLock って、perl から使えないのかしら?
WWW::MechanizeのclickとかsubmitでPOSTされるデータの文字コードってどっかで変えられますか? sjisでPOSTしたいんですがUTF8でエンコードされてるみたいで どうやっていじればいいのか迷ってます
>>929 /dev/urandomって見かけはただのファイルなんだから、
バイナリファイルから4バイト読んで整数としてunpack
みたいな感じでいいんじゃねーの?
>>931 my $mech = WWW::Mechanize->new();
$mech->get( ... );
$mech->current_form->accept_charset('Shift_JIS');
...
>>934 調べてみた。
下のコード(Foo.pmはエラーが起きるようなもの)があったとして、
Perl5.8.xはエラーを出さずに正常終了してしまう問題じゃないかしらん。
-- Foo.pm
package Foo;
Error !!
1;
--test.pl
eval "require Foo; 1";
require Foo;
パターンにマッチした文字列を取り出すのに $& を使うと効率が悪い、と聞きましたが なぜ効率が悪いのでしょうか
盲腸みたいな機能だよね。
考えてみると性器表現で痴漢とか猥褻すぎるよな。
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.
ふむふむ
文字列から変数を作りたいのだけど、 foreach my $hoge ( qw( aa bb cc) ) { warn ${$hoge}; } で上手く動きませんでした。教えてください。 レキシカルスコープだから駄目なのかと思い、 ${$_}としてみたのですが駄目でした。
このスレかあっちのスレか定かではないが 「教えてください。」 って書く奴は要注意だったような記憶がうっすら
連想配列使うことの方が利点だらけだろ
なぜデリファレンスしてるのか、 文字列のリストの中身はそれぞれリファレンスだったのか? 謎は尽きない……。
copalProのサイトが見れなくなってしまっているのですが、 引越し先とか分かりましたら教えてください。 (942さん申し訳ありません)
>>945 「分かりましたら」等に続く「教えてください。」なら無問題でしょう。
>>941 はちょっとあぶないけど warn eval('$' . $hoge); なら動くんじゃね。
おすすめはしないけど。素直にハッシュ使う方がよかんべ。
>>941 特に問題があるようには見えない
foreach の外で、$aa, $bb, $cc が my で宣言されてるんじゃないの?
>>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.
で、少なくとも書いたとおりの動作ではある。
これが期待した物じゃないというなら説明してもらわんと
わからんね。
>>941 $aa = 'A'; $bb = 'B'; $cc = 'C';
foreach my $hoge ( qw( aa bb cc) ) {
print STDERR ${$hoge};
}
とすれば、期待通りにABCと出てくるのだが、3行目を
warn ${$hoge};
に変更すると、何も出てこない。なんでだろ〜?なんでだろ〜?
sed -ne '/HOGE/p' をperlに変換するなら perl -ne '/HOGE/ && print' とやるしかないんでしょうか
951 :
941 :2011/05/24(火) 12:44:18.02
エスパーさせてしまってすみません。 やりたいことは、まったくその通りで、連想配列つかうべきでした。 ありがとうございました。
>>950 しかないかといわれるとperlなんだからいくらでも書き方は
あるけどな。何を求めてるんだろうか??
>>952 && print
って書くのがださいよね、という話です。
じゃあ一生 sed 使ってろよチンカス
>>955 ありがとうございます
文字数は変わらないですね
>>954 sedは正規表現が貧弱じゃないですか
何を怒っているんですか?もしかして、ラリーさんですか?
そもそもsedで '/pattern/p' だけを書くなんてしないよね 本来は何を書きたいのかがちょっと気になる
たしかにこの例は grep HOGE でいいもんなぁ。
本当にやりたいのは < > で囲われた中をとりだしたい perl -ne '/<(.*)>/ && print $1' sed -ne 's/^.*<\(.*\)>.*$/\1/p' のようなものです。
perl -ne 'print $1 if /<(.*)>/ ' ってやればいいんだよ。
&& がダサイなら and を使えばいいじゃない
>>962 ありがとうございます
文字数は変わらないですね
>>964 どうしても不満ならsedでやれば良いんでない?
printなんてよく使うんだからBASICみたく ? で代用したいよね
perlをsedみたいに使いたいなら、pオプション(結果の自動出力)を入れればいい。
初めて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";
971 :
970 :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にしてブラウザに出力 思いっきり文字化けします。 なんですかこれ。
html側のchar-setだろ
973 :
170 :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
これをさっきの関数でデコードさせて出力させると、
æ¥æ¬èª
こうなります。
日本語
って表示されれば成功です。
974 :
970 :2011/05/25(水) 00:54:16.29
安価とかの数字を完全に間違えました。
入力文字列をデコードしろ
CGIの質問は板違いじゃね?
>>975 print my_decode receipt;
こうゆう意味ではないと言うことですか?
>>976 utfフラグの段階からよく分かってないんでこうなりました。
ごめんなさい。
すみません、誘導されてみたのですが、どうもあっちはユニコードが扱えない板みたいなんでこっちでも質問を継続します。 マルチ質問でおかしくならないように責任持って並行に状況書き込みをします。
板違いな上にマルチか
あっちはビットが変化するしム板でしかやれないだろ。
>>970 use utf8 と use URI::Escape 合わせると二重処理になるよ。CGIは関係なくperlの文字解釈の問題。
詳細は
>>980 よろしく。
ようするにだ、Perlの外から入ってきたものは全部フラグを付けれ
uri_unescapeは、特にunicodeの処理しないから、 そのままLatin1-supplementの文字になってるだけじゃん。 バイナリで読んで、エスケープ解いてからutf8で変換。
んなの、向こうのスレのお猿さんテンプレに書いときゃ良いと思うんだけどなあ。 向こうで何百回繰り返されてる質問だろうに。
>>968 4410円は高い。441円なら買う。
あと、左上のまばたきが怖い。
>>970 こっちでも誘導先でも答え出てますやん。
試行錯誤する気が無いなら来るな。
988 :
970 :2011/05/25(水) 18:00:52.21
981-983 ぐぐってるウチに扱い方が分かり、 入出力関係の関数を全部書き直して解決しました。 今までEUCとsjisしか使ってなかったんで助かりました。 ありがとうございます。
989 :
デフォルトの名無しさん :2011/05/25(水) 18:33:32.60
俺ならuse CGI;してparamで受け取る
解決できてなにより。
まもなくここは 乂1000取り合戦場乂 となります。 \∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,, /三√ ゚Д゚) / \____________ ,,、,、,,, /三/| ゚U゚|\ ,,、,、,,, ,,、,、,,, ,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/ //三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ∪ ∪ ( ) ( ) ( ) ) ,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ,,、,、,,, ( ) ( ) ( ) ( )
p
次スレ立ての旅に出てみる。
994 :
デフォルトの名無しさん :2011/05/25(水) 23:20:22.83
exit(0);
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。