Perlについての質問箱 41箱目at TECH
Perlについての質問箱 41箱目 - 暇つぶし2ch786:デフォルトの名無しさん
09/10/09 14:08:33
>>774
車道クラックか?

>>777
解決したならそれを書くのが筋。HTTPレスポンスのことならHTTPヘッダの
Content-Length: 行で取れるよな。

>>782
スカラ型の内部値を変えたいのか?質問の意図がよくわからん。
数値にしたけりゃ
$foo += 0;
文字列にしたけりゃ
$foo .= '';
内部的にリファレンスとか整数型にしたいとかだったら簡単な方法は知らん。

787:774
09/10/09 17:07:06
>>785
普通にcryptで出来るんですね・・・ありがとうございました。

>>781
>>786
趣味で自宅サーバーをやっているのですが
Perlからsystem関数でuseraddを使うためです。
誤解を招く質問をしてしまい申し訳ありません。

788:777
09/10/10 03:46:06
>786
おっしゃる通り、HTTPレスポンスから取得出来ました。
Perlの質問ではありませんでした…

789:デフォルトの名無しさん
09/10/11 01:53:02
自己解決しましたっつーのは自分が苦労して答えを導き出せたから
掲示板に答えが書かれてしまうと自分の苦労の価値が下がってしまうから
それを避けるための自慰行為。
「Webリソース」とか書くようなバ力は788なんかじゃなくてwcとかで解決したつもりだろ。


790:デフォルトの名無しさん
09/10/11 03:25:57
>>787
お陰さまで私も勉強になりました。
今時のシステムはパスワード暗号化にsha512使ってるなんて
知りませんでしたから。
うちのシステムは何を使ってるんだろ?

791:デフォルトの名無しさん
09/10/11 20:13:01
gzファイルをgzopenを使って読み込みこむことはできたんですが
日本語が文字化けしてしまいます
普通のtxtファイルなどは日本語でも文字化けしません
どうしたらいいんでしょうか

792:デフォルトの名無しさん
09/10/11 20:20:33
>>791
使うな。

793:デフォルトの名無しさん
09/10/11 20:25:11
gzopenを使うなってことですか?

794:デフォルトの名無しさん
09/10/11 20:54:51
perlを使うな

795:デフォルトの名無しさん
09/10/11 21:03:41
perlだとできないんですか?
それじゃphpでやってみます・・

796:デフォルトの名無しさん
09/10/11 23:57:04
連想配列について質問です。
たとえばkeysでとりだしたハッシュの順序は一定ではないそうですが、
何回もperl *.plで実行しても同じ順序でキーが取り出されます。
ハッシュの順序はOS依存なんですか?それともperlのバージョン依存なんですか?
同じ環境のもとで同じプログラムにした場合はkeysでとりだされるキーも同じ順序になるのですか?

797:デフォルトの名無しさん
09/10/12 00:12:59
ハッシュ依存じゃないの?

798:デフォルトの名無しさん
09/10/12 00:17:12
>一定ではないそうですが

これは誰から聞いたの?

799:デフォルトの名無しさん
09/10/12 00:35:34
別に乱数は使ってないよ

800:デフォルトの名無しさん
09/10/12 00:51:45
一定ではないというのは環境によるんだろうが
ハッシュに順序の保障を求めるべきではないとは思う
順序の保障が欲しければリストを利用/併用すべきだろうな

801:デフォルトの名無しさん
09/10/12 01:24:16
perlのバージョン依存。

perl5.10.0のperldoc -f keysでは、
===========
超訳。
perl5.8.1までは、セキュリティー上の理由から、
keysはプログラムを実行する度に違う順序で取り出されてた。
(順番自体は見た目上ランダムに決定されてる。ただし、
同一プロセス内で、hashに変更が無いならeach, valuesでも
keysと同じ順である事は保証される。)
===========
暗に「より新しいperlではkeysはhashに変更が無いなら
プログラムを複数回実行しても同じ順に取り出される。」
と言ってはいるが、それをkeysのperldocでは明文化は
してない。
ここまで調べて面倒になった。

俺も>>800氏と同じ見解だし。


802:デフォルトの名無しさん
09/10/12 01:32:14
うそっ
わざわざランダムにしてたんだ

for (keys
っていう処理はするけど、大抵はsortとセットだから気にしたこともなかった

803:デフォルトの名無しさん
09/10/12 02:52:49
>>801
逆だ。5.8.0までは特定の順序で取り出されていたのを、
5.8.1以降で変わるようにしたんだ。

URLリンク(perldoc.perl.org)
> Since Perl 5.8.1 the ordering is different even between different runs of Perl
> for security reasons (see "Algorithmic Complexity Attacks" in perlsec).

URLリンク(perldoc.perl.org)
URLリンク(perldoc.jp)

804:デフォルトの名無しさん
09/10/12 03:59:09
セキュリティが理由なら、止めてしまう訳ないしな

805:デフォルトの名無しさん
09/10/13 05:43:17
質問です。サブルーチンの途中でreturnせずに戻り値を返すことは可能でしょうか?

長文処理の自作モジュールに引数としてファイル名を渡し、
サブルーチン内でopen、while(各行処理)、closeまで行なっています。

行数が数千行になるので各行で処理を終えたい(@本文のようなリストは作りたくない)のです。
現在サブルーチン内で各行をprintしていますが、どうもスマートではないと思い質問しました。

いまの状態を簡易に書くとこんな感じです。

(呼び出し側)
$foo->get('file')

(package foo内のサブルーチン)
sub get {
my $self = shift;
my $file = shift;
open my $in, "< $file" or die($!);
while (<$in>) {
#ここで各行を処理してprint
}
close $in;
return 1;
}

素直に呼び出し側でファイルを開いて行単位でサブルーチンを呼ぶべきかとも思うのですが、
それもなんかスマートでない気がしてモヤモヤしています。よろしければ方向性だけでも示唆ください。

806:デフォルトの名無しさん
09/10/13 06:03:32
コルーチン


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