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


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

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



1 名前:デフォルトの名無しさん [2012/03/02(金) 14:30:16.30 ]
CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: hibari.2ch.net/php/ )

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

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

www.perl.org/get.html
Download Latest Stable Source (5.14.2)

▼ 前スレ
Perlについての質問箱 50箱目
toro.2ch.net/test/read.cgi/tech/1326823096/
リンク集は >>2-3
Perl 日本語処理の基礎の基礎 >>4

75 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 17:16:17.47 ]
>>73
readline使えばいいと思うよ

76 名前:71 mailto:sage [2012/03/08(木) 17:23:37.36 ]
>>74 ブログでした・・・

>>75
なるほど!ばかですね私ってw
うまく動きました。ありがとうございます。

~/work $ perl test.pl

sub read_file1 { local $/ = ""; readline($_[0])}
sub read_file2 { local $/ = ""; my $fh = $_[0]; <$fh>}

open my $fh, "<", "$0";
print read_file1($fh);
#print read_file2($fh);
__END__


77 名前:デフォルトの名無しさん [2012/03/08(木) 17:56:17.05 ]
ファイルロックについていろいろ試したけど

ロックをしないで
ファイルを読み込み中に書き込みするとデータが壊れる
書き込み中に読み込みしても壊れるが
読み込み中に読み込みしても壊れないということがわかった
これらを考慮してファイル読み込み中は書き込みのみロック
ファイル書き込み中は読み込みと書き込みの両方ロックするのが一番いいのである。

78 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 17:59:29.00 ]
何十年前の話題だよ


79 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 18:03:56.39 ]
fcntlの範囲ロックは未来の技術

80 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 18:25:40.22 ]
PCDOSの話か

81 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 19:02:20.23 ]
$cond = "t";
$cond ?
$hoge = "aiueo":
nop;

↑これはいけるけど
↓これはいけないんだね

$cond = "";
$cond ?
nop:
$hoge = "aiueo";

82 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 19:41:49.01 ]
flock

83 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 19:54:16.81 ]
>>81
perldoc.jp/docs/perl/5.10.0/perlop.pod#Operator32Precedence32and32Associativity
> 右結合 ?:
> 右結合 = += -= *= などの代入演算子

$cond = "";
($cond ? nop : $hoge) = "aiueo";

nopが変数じゃないからエラー。



84 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 23:09:14.97 ]
nopが変数じゃないからエラーじゃないから。

85 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 23:25:47.31 ]
nopが変数じゃないからエラーじゃないからじゃないから。

↓ノーエラー
$aho = 84;
$cond = "";
$cond ?
$aho:
$hoge = "aiueo";

86 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 23:33:10.23 ]
有効な左辺値を返すのか。知らなかった。

87 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 23:39:18.06 ]
undef や lvalue sub のように左辺値として有効な何かであれば変数である必要はない。

88 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 23:59:15.46 ]
>>87
さすがにundefはエラーを吐く。
代入可能(左辺値として妥当)な何かであればいいけど。

89 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 01:06:58.84 ]
undef はダメだけど () や (undef) なら妥当だね。
1 ? undef : $dummy = 'aiueo'; は通らないけど、
(1 ? undef : $dummy) = 'aiueo'; は (undef) = 'aiueo' になるので通る。

my @a = "a".."z";
1 ? $foo : $bar = @a; say $foo; #=> 26
(1 ? $foo : $bar) = @a; say $foo; #=> a

90 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 01:11:02.22 ]
1 ? undef : $dummy = 'aiueo'; は通らないけど、
(1 ? undef : $dummy) = 'aiueo'; は (undef) = 'aiueo' になるので通る。
これで意味が変わるのか? やっぱ、クソだわ。

91 名前:デフォルトの名無しさん [2012/03/09(金) 01:20:08.26 ]
flockが使えない環境用にmkdirで書き込みのみロックと読み込みのみロックと両方ロックのを作った
作るのにまる3日もかかった

92 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 01:32:13.34 ]
>>89
それは条件部が定数だからコンパイル時に (undef) = 'aiueo': へ最適化されて
リストへの代入になるからたまたま通るだけで、
($ARGV[0] ? undef : $dummy) = 'aiueo'; のように変動する条件なら
$ARGV[0] ? undef : $dummy = 'aiueo'; と解釈され、
$ARGV[0] が真の時に undef = 'aiueo' をやろうとして実行時エラーになる。

93 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 04:55:27.45 ]
じゃあ
(($ARGV[0] ? undef : $dummy)) = 'aiueo';
なら通ったりするのかな?外側のカッコも最適化されてなかったものにされるのかな?
それって処理系依存な動作だったりしないのかな?




94 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 06:00:11.78 ]
>>93
> perl -v
This is perl 5, version 14, subversion 2 (v5.14.2) built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)
...
> perl -MO=Deparse -e "(($ARGV[0] ? undef : $dummy)) = 'aiueo'"
$ARGV[0] ? undef : $dummy = 'aiueo';
-e syntax OK
> perl -MO=Deparse -e "1 ? undef : $dummy = 'aiueo'"
undef = 'aiueo';
-e syntax OK
> perl -MO=Deparse -e "(1 ? undef : $dummy) = 'aiueo'"
(undef) = 'aiueo';
-e syntax OK

95 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 01:25:39.95 ]
>>91
まさか今週の話じゃないよな?

96 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 01:47:59.87 ]
>>68
今日届いた。らくだ本は青くなってからだじゃれが減ってつまんないよ。
版が上がってますますそう感じる。それともおいらのセンスがないのかな。

97 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 12:50:05.11 ]
日本語の第四版持ってるけどどんな所が改訂されたんだろう

98 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 12:51:35.46 ]
>>97
ラクダの右足踏み込みが2ドット深くなってます。

99 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 13:22:01.47 ]
翻訳されたのが出るのは何年後?

100 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 15:35:25.50 ]
2年後でしょうね。
その頃はPerl5.18なので、脚注で補われるかと。

101 名前:デフォルトの名無しさん [2012/03/10(土) 18:10:37.59 ]
このようにmkdirでロックを作っているのですが
if(mkdir("write.lock",0755)){

}
#(ここの隙間)
if(mkdir("read.lock",0755)){

}

このように読み込みのロックと書き込みのロックの隙間に別のプロセスが入り込んで
read.lockを作ってしまわないようにするにはどうしたらいいんですか?

102 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 18:13:12.98 ]
>>101
ちょっと意味が分からないけど、
if (mkdir("read.lock", 0755) && mkdir("write.lock", 0755))
って事?
どういう事情で読み込み用と書き込み用で2つもロック用ディレクトリ作ってるの?

103 名前:デフォルトの名無しさん [2012/03/10(土) 18:46:08.41 ]
>>102
まあそういうことだけど
2つロック作る理由は

書き込みページ(kakikomi.cgi)
1:ファイルロック
2:ファイル読み込み
3:データ加工
4:書き込み処理
5:ファイルロック解除

読み込んで表示するページ(hyouzi.cgi)
1:ファイルロック
2:読み込み
3:表示
4:ファイルロック解除

1つロックだとkakikomi.cgiの処理が終わるまでhyouzi.cgiがsleep待ちというのはいいのですが
問題はhyouzi.cgiの処理が終わらないと他のhyouzi.cgiがsleep待ちになってしまって観覧数が増えると重くなると言うことです
すなわちhyouzi.cgiは書き込み禁止ロックだけかけて読み込みはできるというようにしたいのです。



104 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 18:58:20.53 ]
DB使えばいいじゃん。
ってこれ言ったらおしまい?

105 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 19:01:20.97 ]
>>103
たとえば、kakikomi.cgiやhyouzi.cgiが書き換えたり参照したりするファイルがdata.logだった場合、
kakikomi.cgiで、
ロックして書き出しの時にtmpファイルへ書き出し、
書きだしたtmpフィアルをdata.logへリネーム
ロック解除。

hyouzi.cgiは、ただ読み込むだけならロック無しで読み込み。

これならどう

106 名前:デフォルトの名無しさん [2012/03/10(土) 19:10:04.23 ]
hyouzi.cgiの読み込み中にrenameでdata.logの中身が変わると
読み込みが中断されたりしないのかな?

107 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 19:58:17.03 ]
renameがアトミックかどうかはOS依存。
ぶっちゃけ※Windowsを除く。

つか板違い。

108 名前:デフォルトの名無しさん [2012/03/10(土) 20:15:05.94 ]
答えられなくなってきたので板違いと言って追い出すことにしました

109 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 20:18:36.62 ]
>>1とはなんだったのか

110 名前:デフォルトの名無しさん [2012/03/10(土) 21:24:22.36 ]
>>1=アトミック

111 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 05:44:09.90 ]
1 Apple
2 Orange
3 Banana
  :

のような 番号-文字列 で構成されたデータがあり、各データは1:1かつユニークであることが保証されます。
(1つの番号に複数の文字列が指定されていたり、逆に複数の番号でAppleが割り振られていたりはしません)

番号←→文字列の相互参照をさせるとき、どのようなデータ構造にするのがスマートでしょうか?


とりあえずユニークであることの保証はデータベースに丸投げして、
Perl側で必要な部分だけ取得し、2つのハッシュ(片方は配列でもいいかも)に突っ込むという形を考えています。


112 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 08:01:20.38 ]
>>111
perldoc.jp/docs/perl/5.10.1/perlfaq4.pod

#!/usr/bin/perl -w
use strict;

my @data = split /\n/, <<'EOD';
1 Apple
3 Orange
5 Banana
EOD

# 番号が密で番号から文字列を引く処理が主なら配列
my @n2s; /([0-9]+) (.+)/ and $n2s[$1] = $2 for @data;
print $n2s[3], "\n"; # Orange

# 文字列から番号を引く処理が主ならハッシュ
my %s2n; /([0-9]+) (.+)/ and $s2n{$2} = $1 for @data;
print $s2n{'Orange'}, "\n"; # 3

# 番号が疎だったり両方の処理が必要ならハッシュ
my %n2s = reverse %s2n;
print $n2s{'1'}, "\n"; # Apple

# 計算量を気にしないなら毎回検索
use List::Util qw(first);
print first { defined $n2s[$_] && $n2s[$_] eq 'Banana' } 0..$#n2s; # 5

__END__
あとはこの手の処理をブラックボックスの中でやってくれるモジュールを探すなり、
それこそデータベースを使えって事になると思うよ。

113 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 09:51:41.13 ]
>>112
サンクス!
実際に運用してみないと分からないけど、文字列→数字への参照の方がクリティカルになりそうなので、
2番目か3番目でやってみる!

試作段階では参照もDBに任せてたんだけど、ちょっと負荷が大きかった(´・ω・`)
まあ、まだ最適化やら何やらする前ってのもあるだろうけどね。



114 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:11:39.48 ]
綺麗なコードだ・・・>>112
どうすればこんなコード書けるようになるんだろう

115 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 18:19:22.10 ]
>>114
perldocちゃんと読んでる?

116 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 22:06:00.97 ]
ほとんど読んだことない。どんな時に読むものなのか分からない。

117 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 22:32:57.14 ]
ていうかどこから読んでいいのかわからない

118 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 01:09:47.82 ]
CGIならKENT本もいいよ

119 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 01:10:49.42 ]
どこらへんを綺麗と思ったのか知らんけど、読んどいて損は無いよ。

strictプラグマは使うべき?
perldoc.jp/docs/perl/5.8.0/perlstyle.pod

後置のfor、修飾子
perldoc.jp/docs/perl/5.8.8/perlsyn.pod#Statement32Modifiers

$_, $1, $2とかの定義済み変数や__END__のリテラル
perldoc.jp/docs/perl/5.6.1/perlvar.pod

変数展開しないヒアドキュメント(かなり下の方だけど)
perldoc.jp/docs/perl/5.14.1/perlop.pod#Quote32and32Quote-like32Operators

ハッシュのキーと値をひっくり返すreverseのイディオム
perldoc.jp/func/reverse

120 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 01:23:22.93 ]
わざわざありがとう。個々の要素要素については分かるんだが、
全体通した時に上手に組み合わせて書くな、書き慣れてそうだなと思った。
もっと読みたい。

121 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 15:37:11.44 ]
opendir my $DH, $dir or die "$dir : $!";
すると「リストを返してるのに括弧が無い」というような warning が出る。
Parentheses missing around "my" list at ...

opendir my ($DH) なら怒られないけど
何故 opendir の dirhandle はリストになってるの?
もしくは、リストになっていると何が出来るようになるの?

122 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 16:40:31.96 ]
警告が出ないから分からん。

123 名前:デフォルトの名無しさん [2012/03/14(水) 00:45:35.55 ]
>>121
その警告は
my $foo, $bar
のように書いたときに出る。この場合、
my($foo), $bar
と見なされるから意図している動作と違うのでは? と。
典型的な例としては、my $foo, $bar = @hoge とか。

最近のバージョンだとこの動作を意図して書いているところでは
警告が出なくなっているんだと思う。多分。




124 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 06:01:58.25 ]
「拒載韓国人(韓国人の乗車拒否)」こんな文字が台湾のタクシーに貼られていることが分かった。
韓国のインターネット上で、大きな話題を呼んでいる。

12日、韓国のコミュニティーサイトに「台湾のよくあるタクシー」「台湾の反韓感情」などのタイトルで、
台湾のタクシーの写真が投稿された。写真には女性がタクシーに乗車しようとしている場面が映っており、
開いたタクシーの窓には「拒載韓国人、NO KOREAN PASSENGER」という韓国人の乗車を拒否する文字が書かれていた。

この写真がネット上で広まると、多くの韓国人ネットユーザーが台湾タクシーの対応に反発。
「台湾はそんなに韓国人が嫌いなのか?」「私も台湾が嫌いだ」「幼稚だ」などのコメントが殺到した。

中には、「外国ではマナーを守ろうよ」「海外でK-POPや韓流は人気だけど、韓国人の市民意識のレベルはまだまだ低い」
といった意見や、「日本はほかの国々から好かれているからうらやましい」「台湾は日本が好きだよな」
「台湾は日本に植民地支配を受けたのになぜ親日なのだろう」などと日本と台湾の関係について議論する韓国人ユーザーらもいた。

韓国メディアによると、台湾内の反韓感情は、韓国が中国と国交を結んだのを機に高まった。
2004年に台湾の1人あたりのGDPが韓国を追い越した頃から、反韓感情は強まりをみせているという。
news.livedoor.com/article/detail/6364207/
image.chosun.com/sitedata/image/201203/12/2012031201423_0.jpg

125 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 08:03:53.62 ]
PerlでMySQLを叩く時、今まで通りに
文字化け防止で$dbh->do("set NAMES sjis");
とやっていたのですが、新しくデータベースを作成し、そこでinsert文を作成したら
Can't call method "do" on an undefined value
とエラーが表示されます。
何が原因か分かる方いませんか

126 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 08:37:21.86 ]
>>121
よく見たら警告の出る所では or die ... の部分を省いてた。
つまり単に opendir my $DH, $dir; と書いてた。後付でゴメンね。

>>123
なるほど dirhandle 云々じゃなくて、 my $DH, $dir の部分がリストなのでは?と警告されてるのか。
open my $FH, '<', $filename; の時はこの警告が出ないから気づかなかった。
つまり open のときはイディオムとして処理されてるのか。

127 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 08:39:35.46 ]
>>125
もしかして
use DBI;

128 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 08:51:24.56 ]
>>127
ちゃんと記入しています。
SELECT文の時は何も問題なく接続できますが、INSERT文になるとなぜかエラーがでます。

129 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 09:00:18.46 ]
一番怪しいのは、
その手の常套句であり頻出語の筆頭である
「いままでどおりに」

その時から行った「今まで通り」の手順に何らかの問題がある


130 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 09:57:26.72 ]
>>125
だから、undefined value なんだろ。$dbh が。

>>126
opendir my $dh, "$dir" でもいいはず。

131 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 11:14:45.42 ]
>>130
本当にごめんなさい。
自分の頭の中では
$sth = $db->do("set NAMES sjis");
とやってるつもりだったのに・・・
$dbh->do("set NAMES sjis");
なんでこんな書き方してるんだ・・・・・・

132 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 11:35:25.51 ]
質問です。
DBI.pm、DBD::Pg.pmのソースを見たのですが、
DBIのメソッドexecuteはどこで定義されているのでしょうか?


133 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 12:25:54.68 ]
>>130
あ、はい。それでようやく分かった。
open my $FH, '<', $filename; は間に '<' が挟まるから
リストの宣言とは解釈しようがないわけね。
どうもありがとー。



134 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 13:03:22.52 ]
パーサーがコンテキスト読みすぎで
文法が無駄に複雑

135 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 15:39:57.40 ]
初歩的な質問でごめんなさい

%hashの添え字をスカラー変数名に自動的に置き換えるにはどう言う風に組んだら良いのでしょうか?


$hash{hoge} $hash{moge} $hash{poge},,,,,,
これを
$hoge $moge $poge........
と言う風にしたいのですが、初心者すぎて手作業でしか出来ませんでした。

136 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 17:12:18.38 ]
こういうこと?

$text = <<'HERE';
$hash{hoge} $hash{moge} $hash{poge}
HERE

$result = "";
while ($text =~ /{(.*?)}/g) {
$result .= "\$$1 ";
}
print $result;


137 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 17:30:14.63 ]
my $keys = [ qw(a b c) ];
my $values = [ qw(apple banana chocolate) ];
my $hashref = {};
@{%$hashref}{@$keys} = @$values;
print $hashref->{a}, "\n";

perl v5.8.9で実行すると
apple
と表示されるのですが、

perl v5.10.1ではエラーになります。
Can't use string ("0") as a HASH ref while "strict refs" in use at 〜〜.

perl v5.10.1でもappleと表示されるようにするにはどうすればいいのでしょうか?

138 名前:137 mailto:sage [2012/03/14(水) 17:48:44.70 ]
自己解決
#@{%$hashref}{@$keys} = @$values;
@{$hashref}{@$keys} = @$values;

139 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 18:02:18.49 ]
>>136
ありがとうございます。
whileと正規表現を使えばいいんですね。
ありがとうございました。

140 名前:デフォルトの名無しさん [2012/03/14(水) 18:40:58.63 ]
socket通信のプログラムを書いていますが、
オブジェクトを送信して、受信側でオブジェクトを参照しようとすると
HASH(0x00)みたいになって参照できないのですが、
何か対処方法はありますか?
以上、よろしくお願いします。


141 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 18:44:14.61 ]
コードも無しに対処法とは……
俺らのことをもしかしてエスパーか何かだと思ってる?


142 名前:デフォルトの名無しさん [2012/03/14(水) 19:10:21.40 ]
うーん。会社から2chに繋がらないのです。
明日USB経由でコードを持ってきて出直します。


143 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 19:11:13.76 ]
それはそれでいいのかw
・・・まぁ原因部分だけならあれか



144 名前:エスパー魔美 mailto:sage [2012/03/14(水) 19:44:43.13 ]
>>140
オブジェクトをそのままファイルに保存出来ないのと同じ理由。
Storable、Data::Dumper、JSON などでシリアライズして送信すると良いかも!

145 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 19:45:26.17 ]
会社って……
だーーーーーれも教えてくれないの???


146 名前:デフォルトの名無しさん [2012/03/14(水) 19:51:08.42 ]
>>143
やっぱりわかっていそうだw

送信が
print $socket $obj

受信が、
my $msg = <$client_socket>){
みたいな感じで、
chomp( $msg);
$obj = $msg;

$obj->show_hoge;
↑HASHがうんたらって出てくる。
多分、分かる人はすぐに分かる問題だと思うけど。


147 名前:デフォルトの名無しさん [2012/03/14(水) 21:56:16.89 ]
>>144
了解。
ありがとうございます。


148 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 22:27:17.94 ]
>>145
教えてくれる人がいる方が珍しい
大抵は孤独に独学だよ

149 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 22:59:40.11 ]
>>132
DBI::DBD::SqlEngine::st::execute
SqlEngine.pmの773行目あたり

>>137
素直にList::MoreUtils使わん?

use List::MoreUtils qw/zip/;
my $keys = [ qw(a b c) ];
my $values = [ qw(apple banana chocolate) ];
my $hashref = +{ zip @{$keys}, @{$values} };
print $hashref->{a}, "\n";

>>146
show_hogeがcoderefだからそのまんまじゃシリアライズしてもダメかもね。
データだけ渡してロジックは受け側が持っとかないと。

150 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 23:24:05.58 ]
Perl6はいつリリース予定ですか?

151 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 23:52:28.92 ]
クリスマス

152 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 23:56:23.47 ]

Digest-SHA-PurePerl-5.71でprint sha512(hoge);が出力されないのはなぜか教えてもらえませんか?

sha256やsha1は出力されるのに。。

153 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 00:20:03.00 ]
>>145
わかるわー

会社で聞くと、おめーそんなこともわからねーのかふざけんなって、居眠りばかり
してるおっさんプログラマーに怒られる



154 名前:エスパー魔美 mailto:sage [2012/03/15(木) 02:34:00.68 ]
>>152
エラーメッセージは出た?

手元の環境では動くようだけど。
# This is perl 5, version 12, subversion 3 (v5.12.3) built for darwin-multi-2level
perl -MDigest::SHA::PurePerl=sha512 -e 'print sha512("hoge")'
perl -MDigest::SHA::PurePerl=sha512_hex -e 'print sha512_hex("hoge")'


155 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 07:33:49.40 ]
>>154さん

ありがとうございます
エラーはでません。指示頂いたやりかたで試してみます。


【ソース】
use lib '../module';
use Digest::SHA::PurePerl qw(sha1 sha256 sha256_base64 sha512 sha512_base64);
print sha256 (a);
print "\n";
print sha256_base64(a);
print "\n";
print sha512(a);
print "\n";
print sha512_base64(a);

【結果】
C:\Perl\work>sha.pl
ハ浴ハスハツ1ウ・ワMァ・・|Nrケw・dサ
ypeBEsobvcr6wjGzmiPcTaeG7/gUfE5yuYB3ha/uSLs


C:\Perl\work>


156 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 14:39:03.11 ]
use Digest::SHA::PurePerl;
my $state = Digest::SHA::PurePerl->new(512) or die;

私の環境もこれで死ぬ。
軽くソース追ってみたけど、64bit長の計算ができないと、はねられる模様。

157 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 18:14:15.64 ]
__END__以下を一気読みして変数に入れるため以下のようなコードを書きました。
しかし一気読みされずこの様に出力されました。
>[あいうえお
>かきくけこ

>]
何故行の区切り文字を無くしたにも関わらず区切られてしまうのでしょうか。
これは仕様なのでしょうか?This is perl, v5.10.1 built for MSWin32-x64-multi-thread


$/ = "";
$data = <DATA>;
print "[$data]";

__END__

あいうえお
かきくけこ

さしすせそ
たちつてと

なにぬねの
はひふへほ



158 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 18:56:08.33 ]
perldoc.perl.org/perlvar.html
You may set it to undef to read through the end of file.
Setting to "" will treat two or more consecutive empty lines as a single empty line.

159 名前:エスパー魔美 mailto:sage [2012/03/15(木) 18:56:25.39 ]
>>157
perldoc の説明だと分かりにくいけど、"" は "¥n¥n" と似た動作をする。
多分、undef $/; が答え。

160 名前:デフォルトの名無しさん [2012/03/15(木) 19:06:08.11 ]
>>157
これって改行が続いていて、そこが終了と認識されているんじゃないの?
シングルクオテーションでくくってみたら?


161 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 19:34:13.02 ]
いろいろ参考にしてオリジナルアップローダー作ってみたよ。
基本機能は備えて流れにくいと思うけど、至らない部分あるかも。

111.moo.jp/uploda/index.php

162 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 19:41:13.25 ]
噴いた

163 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 20:02:39.92 ]
file33.jpg
1234




164 名前:157 mailto:sage [2012/03/15(木) 20:30:21.12 ]
>>158,159,160
$/ = ""には空行を区切り文字にする、という意味があったのです。
代わりにundefを使うことで目的の動作が実現できました。
""とundefの二種類があることを活用しているのです。
レスありがとうございました。




165 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:19:56.00 ]
パ・パ・パパッパ〜Perlライス

166 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 01:20:27.74 ]
>>161
あれ?アドセンスは?

167 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 01:58:25.69 ]
sub decimal2binary {
my $decimal = shift;
my $binary = "";
while($decimal>=1) {
$binary = $decimal % 2 . $binary;
$decimal /= 2;
}
$binary;
}

sub binary2decimal {
my $binary = shift;
@binary_ary = reverse split //, $binary;
my $i = 1;
my $result = 0;
for(@binary_ary) {
$result += $_ * $i;
$i <<= 1;
}
$result;
}

print binary2decimal(decimal2binary(5184)); #=> 5184

こういう10進数と2進数の変換関数を書いたのですが、もっとクールにしたいです。添削お願いします。

168 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 02:20:19.81 ]
>>167
perldoc.jp/docs/perl/5.10.0/perlfaq4.pod#How32do32I32convert32between32numeric32representations47bases47radixes63


169 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 15:10:05.60 ]
デバグの時に使うBEGIN{ $| = 1; print "Content-type: text/html; charset=shift-jis \n\n"; open(STDERR, ">&STDOUT"); } は具体的にどう言う動きをするのでしょうか?
&STDOUTでエラーを検知したら、 print "Content-type: text/html; charset=shift-jis \n\n"でSTDOUTの中身を書き出すって感じなのかな?と思うのですが、{ $| = 1;は何を指示してるのでしょうか?感緑化されてるようでちょっと意味がわかりませんでした。
初心者ですみません。

170 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 15:16:17.28 ]
perldoc嫁ks

171 名前:エスパー魔美 mailto:sage [2012/03/17(土) 16:11:46.46 ]
>>169

BEGIN{ # コンパイル時に実行されるブロック (sub BEGIN { ... } と同じ)
$| = 1; # STDOUTのバッファリングをオフ
print "Content-type: text/html; charset=shift-jis ¥n¥n";
open(STDERR, ">&STDOUT"); # 標準エラー (STDERR) の出力先をSTDOUTと同じにする。
}

172 名前:デフォルトの名無しさん [2012/03/17(土) 18:08:54.19 ]
renameが失敗するのはどういう場合ですか?

173 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 18:11:14.44 ]
おなじファイルがすでに存在する場合(ファイル名がわるい)



174 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 18:14:57.02 ]
>>172
同じ名前のファイルがある場合。
同じ名前のディレクトリがある場合。
変更しようとしているファイルが存在していない場合。
ファイル名を変更する権限がない場合。
別のプログラムがファイルを開いていてロックかけている場合。
名前として有効でない記号などが入った名前の場合。
ウイルスに感染している場合。
OSが不調の場合。
HDDが壊れている場合。
パソコンが壊れている場合。
そういう夢を見ていた場合。
電源が入っていない場合。
電力会社が大変な事になっている場合。
世紀末でメシア待ちの場合。
ヤマト発進後のプロジェクト成功待ちの場合。

175 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 18:36:13.19 ]
エラーバリアブル見ろよ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<64KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef