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

このエントリーをはてなブックマークに追加
932928:04/09/06 12:40
ぁぅ、違った。
リンク先は911さんへのレスでしたか。
「mach」のことは聞かないほうがいいのだろうか・・・
934927:04/09/06 13:05
substrの引数が「EXPRのOffsetバイト目から何バイトとnバイトの領域を指定」
という意味なのに対して、
vecの引数は「EXPRのビット長をアライメントとしたOffset番目」
という意味ですね。
似てるようでいてちょっと違いましたね。スマソ

>>933 こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/unix/1005039977/
マッハジェットプリンタ
>>911
1byte のバイナリを出力するときは、chr でもOK。

print OUT chr($a);

1byte バイナリ→アスキー変換は ord 。
教えてください。2日悩みましたが分かりませんでした。
POPでCGIにクエリを投げて、responseを取得したいのですが、
下記のように書くと、$answer1、$answer2が全く同じものが返ってくるんです。
デバッガで見ると&POPに渡した変数は、ちゃんと$issnに入ってるのに、パケットを
拾って見たところ、全く同じrequestしてるんです。
$answer1 = POP("1234-5678");
$answer2 = POP("5678-1234");
この順番を逆にするとanswer2は上手くいって、answer1に2と同じものが入ります。
根本的なミスだろうとは思うんですが・・。

↓スクリプト
#!/usr/bin/perl
use LWP 5.64;
use URI;
use encoding 'utf8';
binmode(STDERR, ':raw :encoding(utf8)');
use Encode;

$answer1 = POP("1234-5678");
$answer2 = POP("5678-1234");

sub POP {
my $issn = @_[0];
my $browser = LWP::UserAgent -> new;
my $url = URI -> new('http://www-lib.ac.jp/Search');
my $response = $browser->post( $url,
[
db => "all",
isbn_issn => $issn,
submit => "Search",
],
);
$response = decode('shiftjis',$response->content);
return $response;
}
Perlのバージョンは?
>>939 5.81です。すいません。
そのモジュール使ったことないからよくわからんけど、
ちょっと思ったのは

\%hogehogeってのと\@hogehogeってのは等価なのかね? 一般論として。

つまり、 ['hoge', 'hoge', 'hoge', 'hoge']と
{'hoge' => 'hoge', 'hoge' => 'hoge'}は書き方は違うけど中身は一緒?

今日まで、んなこと気にしたことなかったケド。
942942:04/09/06 23:12
んなわけないか。

[ ... ]のとこを{ ... }にしたら動いたりしないかな。しないか。
943942:04/09/06 23:29
いまperldoc見たら [ ... ]でも{ ... }でもどっちでもいいって書いてあるね。
だからそれは関係ないな。
>>938
答えではないけど、、

use LWP 5.64;

use LWP::UserAgent;

],

]

にしてみたらどうでしょう? 関係ないかな。。
945937:04/09/07 00:32
>>937
文書中 POP -> POSTの間違えです。恥

>>941-944
レスありがとうございます。>>938は元のスクリプトが長いもんで、
適当に縮めて書き直しました。今風呂に入って見直してみたら、細かい
間違いがいっぱいありました。疲れ果ててました。すいません。
ただ気を取り直して、別のスクリプトを新しく書いてみたら、上手く逝ってしまいました。
元がどうして上手く逝かないかはまだわかりませんが・・。

↓一応実働します
946937:04/09/07 00:32
#!/usr/bin/perl
use LWP 5.64;
use URI;
use encoding 'utf8';
binmode(STDERR, ':raw :encoding(utf8)');
use Encode;

$answer1 = POST("200-0000"); #郵便番号を入れる
$answer2 = POST("100-0000"); #郵便番号を入れる

print $answer1."\n".$answer2;

sub POST {
my $zip = $_[0];
my $browser = LWP::UserAgent -> new;
my $url = URI -> new('http://search.post.japanpost.jp/7zip/zip2.cgi');
my $response = $browser->post( $url,
[
mode => "search",
start => "0",
end => "400",
keyword => $zip,
],
);
$response = decode('shiftjis',$response->content);
return $response;
}
>>941
全然別物ですから・・・

>今日まで、んなこと気にしたことなかったケド。
大丈夫かお前さん
きちんと症状が出てることを確認したプログラムを
打ち直さずにコピペしろってことで。
>>947
>>941 じゃないが、>>942 ですぐに気付いてるよ。
マターリいきましょ。

[...] は配列へのリファレンス、{...} はハッシュへの
リファレンスね。
リファレンスというか、無名配列と無名ハッシュでした。。
>>941
[]と{}は別物なんだけど、LWP::UserAgentのpostはどっちも
食えるように作ってあるという話ですな。普通は混同しては
いけない。

952ぬるぽ ◆GmgU93SCyE :04/09/07 14:19
名前の「GmgU93SCyE」は、どういうプログラム文で決めたものでつか?
953デフォルトの名無しさん:04/09/07 16:20
次の質問をどうぞ
>>952
おそらく、DES暗号あたりかな
>>952
「2ch」「トリップ」あたりでぐぐればいろいろでてくるよ。
perlならこのへんかな?

ttp://multix.jp/html/memo/030525.html#0002
>>952
DESてのが元々あり
平分←(鍵)→暗号文
と行き来できるもので(以下略
(XOR演算とかbitのローテーションとか)
Cryptは最初に固定の平分を暗号文にし、
その暗号文を繰り返し(以下略
(salt、patternとか)
トリップはそのcryptを利用しており
キーの2,3文字目をsaltと固定し、cryptの戻り値の末尾10文字を(以下略
($trip = substr(crypt($key, (substr($key."H.", 1, 2))), -10);とか)

適当、半分くらいは当たってるはずだ。ガッはしてあげません。
957ぬるぽ ◆GmgU93SCyE :04/09/07 17:11
ありがと
PHPでオナジことできればいいのになぁ・・・
できるだろ・・・。
959ぬるぽ ◆GmgU93SCyE :04/09/07 17:39
2chとまったくオナジ変換ね
>>959
スレタイ読め
もしくはphp cryptで検索くらいしろ。
961デフォルトの名無しさん:04/09/07 18:52
質問です。
perlの処理で、”Enterキーを押す”っていう操作は
perlでは、どう記述するのでしょうか?
ご存知の方是非教えて頂きたいのですが?


$key = <STDIN>;
if($key eq "\r\n" or $key eq "\n" or $key eq "\r"){print 'Enterキター';}

print "\n"
とか
>>961
EnterキーとReturnキーは区別するの?
961です。
>>962さん
ありがとうございます!
この処理で2日間悩んでました。
助かりました。
ちなみに、>>963の改行はやったんですが、うまくいかなくて・・・
966937:04/09/07 20:46
スレ汚しすいません。
昨日上手く逝ったはずのスクリプトですが、実際動かすとやっぱダメでした。

http://www.perldoc.com/perl5.8.0/lib/LWP/UserAgent.html
によると$ua->post($url, \%formref, Header => Value,...);とあり
>>951さんの言う通りLWP::UserAgentのpostはどっちも食えるようです。

んで、分かりにくかったので、ハッシュに代入、ハッシュのリファレンスを入れました。
コレでも駄目だったんですが、>>946の郵便局のURLと郵便局のフォームのペアを入れ
ると上手く逝きます。じゃあ、CGIが駄目なのかと思い、Etherealでパケットをみると
同じパケットを送っています。元は、図書館のCGIから論文を探してくるスクリプトです。
わけわからんです。

↓スクリプト
967937:04/09/07 20:49
#!/usr/bin/perl
use LWP 5.64;
use URI;
use encoding 'utf8';
binmode(STDERR, ':raw :encoding(utf8)');
use Encode;

Tosho("issncode1");
Tosho("issncode2");
sub Tosho {
%form = (
db => "all",
wa => "w",
yo => "y",
lib_cd => "00",
isbn_issn => $_[0],
search_type => "Detail",
);
print $_[0];#変数も渡っていて
print $form{isbn_issn};#ちゃんとハッシュにも入っている
print "\n\n";
my $browser = LWP::UserAgent -> new;
my $url = URI -> new('http://www.lib.ac.jp/Scripts/WebOpac.dll/Search');
my $response = $browser->post( $url,\%form);
my $response = decode('shiftjis',$response->content);
print $response;#なのにresponseが同じ・・
print "\n";
}
情けない質問で申し訳ないですが…。
不特定の変数名などに「なんたらかんたら」とか
「ほにゃらら」みたいな感じで'foo'と'hoge'が使われますよね?
あれの意味とか起源って、なんですか?
hogeは、日本限定とか?知ってる方、教えて下さい。
970968:04/09/07 22:29
>>969
大変勉強になりました。ありがとうございます。

上記HPでは、否定されてますが、fooは「ほげ」の英語版って
ことで大雑把にはokですか?
>>967

「\」を「\」に置換した上で
URLを差し替えて試してみたら正常に動きましたけど。
(Redhat上のPerl5.8.0)

そこ以外のどこかがおかしいんじゃないの
>>959
DES はアルゴリズムが公開されているので、
どの言語でも実装できますよ。

--
次スレよろです
クソわがままな話ですが任意の特定のスコープ内だけブールの定義を変える方法存在しますか?
たとえば負の数値は全て偽、みたいな?

こーゆーのがあると記述がサッパリして見やすいなとか思っただけなんで、
ないんならそれでおkです。
>>974
演算子のオーバーライド
976
>>975 arigeter
>>966
>同じパケットを送っています
つーのはリクエストが同じってこと?
同じリクエストならこの場合は同じレスポンスが返るだろうけど
リクエストが同じなのかレスポンスが同じなのかはっきりしてちょんまげ

あとここではバックスラッシュを \ で書いても無問題だと思うよ
>>977
arigatorだろ。正しい英語を使いませう
それを言うならalligator(自己レスorz)
お、次スレ
Perlについての質問箱 12箱目
http://pc5.2ch.net/test/read.cgi/tech/1094579428/

おつんつん