X



Perlなんですが・・・
0001初心者垢版01/09/11 15:56ID:9.SKwdns
まったくの初心者なんですけど
Perlの質問に答えてみようと思います

とりあえず my は使ったほうがいいみたいです
よろしくお願いします
0004初心者垢版01/09/11 16:11ID:9.SKwdns
>>2-3さん
そんなに驚かないでください。
0005名無しさん@お腹いっぱい。垢版01/09/11 16:26ID:???
ちょっとワロタよ、一緒に勉強しよー♪
でも、初心者師ねな人にはウザイからサゲでこっそりヤローヨ(・∀・)
0007初心者垢版01/09/11 17:02ID:???
>>5
はい、勉強します。たまには上げさせてくださいね
>>6
一つも質問に答えてないのに終了なんてイヤです
0008名無しさん@お腹いっぱい。垢版01/09/11 17:21ID:???
そんなに質問に答えたいなら質問スレに投稿された質問に答えてればいいだろうが。
それでも物足りないなら他のBBSに投稿されている質問に答えてやれ。

そうすることがこの板の住民にとってもアンタにとっても困っている厨房にとっても最も幸いだ。

-完-
0009初心者垢版01/09/11 18:12ID:???
逆ギレしてみます

オイこら、初心者だからってなめてんじゃねェよ
答えってやるって言ってんだ
ゴタゴタぬかす前に早く質問晒せよヴォゲ!
0012  垢版01/09/11 18:30ID:???
オブジェクト指向に付いて簡単に教えて下さい。
0013名無しさん@お腹いっぱい。垢版01/09/11 18:32ID:liJMw8bE
みんないぢわるだなぁ…
0015初々しい人垢版01/09/11 18:41ID:???
私のような初々しい人でも使える可逆暗号化ライブラリ作れ
0018初心者垢版01/09/11 19:42ID:9.SKwdns
>>10
libcryptの実装によって暗号化アルゴリズムは違うようです。
crypt(3)を呼び出してるだけのようですのでPerlとは直接関係ないです。

>>11
ソースを読んでくださいそれが実装です。
perldoc perlguts も参考になるかもしれません。

>>12
範囲が広すぎです。
Perlでオブジェクト指向を実装するには?ってことですか?
オブジェクト指向の概念ということだとスレ違いです。

>>15
すでにあるようです。
http://search.cpan.org/Catalog/Security/
ここでCrypt:: で始まるモジュールで好きなの選んでください。
使い方がわからなかったらまた聞いてください。

>>17
すみません。
Cはあまりやったこと無いのでxsについてはあまり知りません。
perl perlxs が参考になりそうです。
0019名無しさん@お腹いっぱい。垢版01/09/11 19:47ID:???
初心者に対してperldocを読めとはなんて素晴らしい教え方だろう。
感動した!

------------------------------終了------------------------------
0021初心者垢版01/09/11 20:07ID:???
>>20
$safe = 'test';
$tainted = `echo $safe`;
こんな感じでどうですか?
002220垢版01/09/11 20:16ID:???
>>21
おお、簡単なことだったんですね。
もしかして初心者さんって本物の
Perlハカー?
0023初心者垢版01/09/11 20:21ID:???
taintを取り除く必要がないのなら、
use re 'taint'; も使えます。
マッチさせた値のtaintをそのまま維持するようです。
002520垢版01/09/11 20:41ID:???
>>23
今日初めて
man re
してみました。勉強になります。

ただ、今回は一旦evalする必要がある
ので、taintは除去しなきゃいけませ
ん。

いずれにせよありがとうございます
>>初心者さま
0026初心者垢版01/09/12 19:06ID:y/zpkkrk
ひそやかなる怒りと悲しみを胸に。

質問してください。
0027お願いします垢版01/09/13 01:01ID:???
perlで作ったcgiをwebで動かしたときにトランザクション制限はどの程度でしょうか?
例えばほぼ同時にperlが動いた場合などどの程度同時起動すると止まるんでしょうか
0028名無しさん@お腹いっぱい。垢版01/09/13 02:32ID:???
>>27
Apache の MaxClients ディレクティブの設定によって、
CGI起動のプロセス数は制限されるでしょう。
その前に色々なシステムのlimit、
たとえばメモリやファイルのオープン数、に達すれば当然止まるでしょう。
いずれにせよ、環境次第です。
0029初心者垢版01/09/13 02:33ID:skA46.9M
すみません。28=初心者です。
0030_gunzip垢版01/09/13 06:51ID:???
>例えばほぼ同時にperlが動いた場合

Configureの途中、libperl.soのダイナミックリンクを利用する
方を選択すると、実行モジュールのサイズが小さくなるし、
複数のperlインタプリタでイメージを共有できるので、
結果として,mmap()コールで実行ファイルをメモリににマッピング
する際のオーバヘッドの減少、ディスク/スワップ領域の利用効率の向上、
物理メモリの節約等のメリットがあるね。
(....デフォルトでは実行速度向上のために利用しないようになっているけど)
0032_gunzip垢版01/09/13 15:51ID:???
>>11
Perlのハッシュは分離連鎖法(separate chaining)で、ハッシュ値が衝突した場合リンクリストで繋いでいく方式。
詳しくはhv.cを読めば分かるよ。

#ちなみに、Perl5.7.2からはハッシュ関数が変更されています。
003327垢版01/09/13 17:12ID:???
>>28-30
ありがとうございます。詳しい初心者さんと_gunzipさん
若干調整できるものの環境次第と覚えておきます。難しいなぁ。
0034名無しさん@お腹いっぱい。垢版01/11/07 02:11ID:szSo57Rp
Win32::DDEに関するドキュメントはどこにあるのでしょうか。
できれば日本語がよいのですが。
スレ違いですが、DDEに関して教えてくれるスレ知りませんか?
0035初心者垢版02/01/07 23:41ID:uQai8xGp
久々にアゲてみたり
0037名無しさん@お腹いっぱい。垢版02/01/09 17:51ID:???
evalを使っているcgiへの具体的な攻撃方法を教えて下さい。
また、どうしてもevalを使う必要があるときの、
攻撃回避方法も教えて下さい。
0040名無しさん@お腹いっぱい。垢版02/01/09 18:57ID:???
Perlで電気ストーブを作るにはどういう記述が必要なのかね?
俺に教えてみたまえ。Perlという言語はそもそも電気ストーブの開発の為に
考案された言語なのだよ。つまりこの質問に答えられないようならPerlについて何も理解していないということだ。
0041名無しさん@お腹いっぱい。垢版02/01/09 18:58ID:bJedpWRu
パールについてお聞きしたいです。
メールアドレスをパラメータにしてCGIに渡したいのですが、
このメールアドレスを暗号化した状態(つまり見ても分からない)で
CGIに渡したいです。 それで渡した後、暗号を複合化して
メールアドレスを使いたいです。
CRYPT関数は複合化できないし・・・
どうしたらよいのでしょうか?
0044名無しさん@お腹いっぱい。垢版02/01/09 19:07ID:bJedpWRu
<<41
あの・・具体的に教えていただけると
ありがたいのですが・・・
関数とかないのですか? 
0046名無しさん@お腹いっぱい。垢版02/01/09 19:31ID:bJedpWRu
>>45
ありがとうございます
my $key = pack("H16", "0123456789ABCDEF");
my $cipher = new Crypt::DES $key;
my $ciphertext = $cipher->encrypt("plaintex"); # NB - 8 bytes
print unpack("H16", $ciphertext), "\n";

exampleにあったこれでしょうか?
これで0123456789ABCDEFの所にメールアドレスをいれて暗号
化するのですか?
0047初心者垢版02/01/10 14:45ID:h2cHbHUk
>>38
evalは引数をコードとして実行する関数です。
例えば、
$code = q{ $foo = 'bar'; };
eval $code;
だと$foo に'bar'が代入されます。
実行するコードを実行時に変化させたい場合によく使います。
ブロックを引数にするevalもあって
eval { $foo = 'bar'; }
はさっきのコードと同じことをしますが、実行するコードは変えられません。
何に使うのかと言うと、evalで実行時エラーをトラップできるので
例外処理によく使われます。
>>37
単純な例で例えば、CGIのクエリーをそのままevalに渡してしまう例、
use CGI;
$q = CGI->new();
eval $q->query('code');
とすると、攻撃者は任意のコードを実行できてしまいます。
回避方法としては汚染チェックをきちんとすることです。
それさえやっていれば、別にevalの使用を恐れることはないでしょう。
0049名無しさん@お腹いっぱい。垢版02/01/10 18:51ID:iKOVjCBf
>>46
plaintexの方ね。
0056初心者垢版02/02/01 23:49ID:GSMdD5I4
初心者パワーをなめちゃぁいかん。
0059名無しさん@お腹いっぱい。垢版02/02/03 11:53ID:6O2qk++F
はい。私は毎月50万円払っています。
0062名無しさん@お腹いっぱい。垢版02/02/04 03:23ID:sAx7lHcm
>1
perlってなんですか?
0063初心者垢版02/02/04 04:03ID:g/ay00Kk
>>62
Perlで書かれたスクリプトを実行するコマンドです。
0064名無しさん@お腹いっぱい。垢版02/02/04 09:42ID:t9Gb2AU1
my及びlocal関数での局所化の必要性について教えて下さい。
0065名無しさん@お腹いっぱい。垢版02/02/04 09:52ID:t9Gb2AU1
それとついでにここの1さんは少なくとも中級者以上の実力はあると思うのです。
まぎらわしいのでHNを中級者に変えません?
0066名無しさん@お腹いっぱい。垢版02/02/04 11:49ID:fnAmBNHz
こんにちわ、perlの事で質問させてください。
以下のスクリプトですが

 #! /usr/bin/perl  # お約束
 # 私のスクリプトそのままです(編集はしてません)
 $TMP = 10 ** 10;  # $TMP に10の10乗を代入
 $X = 10;  # $X に10を代入
 while ($TMP)  # $TMPが0になるまで繰り返し処理
  {$A = --$TMP % $X;  # $TMPの値を-1し、$Xの剰余を$Aに代入
  print "$A $TMP \n";}# 処置した値を画面に表示


上記のスクリプトですが、表示される$Aの値が変化しません
5 999999999
5 999999998
5 999999997 ......

$Xの値が1だと$Aは0で固定
$Xの値が2だと$Aは1で固定
$Xの値が3だと$Aは0で固定
$Xの値が4だと$Aは3で固定
$Xの値が5だと$Aは0で固定
$Xの値が6だと$Aは3で固定
$Xの値が7だと$Aは3で固定
$Xの値が8だと$Aは7で固定
$Xの値が9だと$Aは3で固定

私の知識が正しければ、$TMPの値を$Xで割った余りの数値が表示され
1行ごとに値が変更されると思うのですが。。。

どこか間違っているのでしょうか
識者の皆様、ご回答をお願いします
0067名無しさん@お腹いっぱい。垢版02/02/04 12:00ID:???
>識者の皆様、ご回答をお願いします
「皆様」に聞きたいなら初心者スレに書け。
ここは>>1に聞く為のスレだ。

>1行ごとに値が変更されると思うのですが。。。
固定されないが。
0068初心者垢版02/02/04 13:31ID:g/ay00Kk
>>64
必要性と言われても・・というのが正直なところです。
何らかの必要性があるからmyやlocalが存在するのでしょう。

一般的にグローバル変数は少ない方がいいとされています。
ソースを他人に見せるときや、昔書いたソースを見直すとき、
グローバル変数が無い方が理解しやすいです。

>>65 初心忘るべからず。

>>66
Perlのバージョンはいくつでしょう?
http://www.perldoc.com/perl5.6.1/pod/perldelta.html#Core-bug-fixes
の3項目、
Integer modulus on large unsigned integers
sometimes returned incorrect values.
と言うわけで、Perl5.6.0以降を使いましょう。
006966垢版02/02/04 13:53ID:???
>>68 :初心者様
ご回答ありがとうございました
確認してみたところ、確かに、バージョンが古すぎました
(5.005_03)

$TMPの値を10**10 から 10**9 に変更して実施してみたところ
正常に動作することを確認しました
ご回答、ありがとうございました
0070名無しさん@お腹いっぱい。垢版02/02/04 20:08ID:+YaLpde/
>>66
老婆心ながら
変数名を3文字に統一しないなら「TMP」は「TEMP」にした方が良いね。
あと、66のスクリプトなら「$A]と「$X]の変数名は逆にしようよ

一番良いのは
$TEMP => $I(カウント変数)
$A    => $X(計算値変数)
$X    => $A(定数)

細かいけど、癖にしてたほうが後で役に立つよ
0073名無しさん@お腹いっぱい。垢版02/02/04 20:40ID:nACYCDdm
しかし正論だ。(笑
0078名無しさん@お腹いっぱい。垢版02/02/04 23:33ID:???
>>77
勉強になります。

sortってuniqの前準備に、

@list = sort(@list);

でしか使ったこと無いから知らなかったです。

sortも独自の書式使いますね。

sort{a <=> b}こんなん。
0079名無しさん@お腹いっぱい。垢版02/02/05 01:29ID:ucr4R94I
>>75
記憶違いだったら本当にごめん
sort文で使用される$a,$bは、完全にsort文だけの中で仮想変数で
外部の変数とは別扱いではなかったでしょうか?

初心者なんで激しいはツッコミは勘弁して下さい
008079垢版02/02/05 01:30ID:???
初心者以前に 日本語が変
0083615垢版02/02/05 02:55ID:???
$a ってreadonlyじゃ無いから、間違えた時気付きにくいんだと思います

use strict;
$a = 100; #エラー出ない

これでModification of read-onlyが出ないと場合によっては嵌る事に
なるのかと
Perlはstrict+wスイッチが大前提だから、そんなに神経質になる程じゃ
ないと思いますが。
0085617 (←違う)垢版02/02/06 18:40ID:hdNADrgP
system関数を使用せずに
特定のLAN接続端末のIPアドレスを指定して
そのMACアドレスを知る方法が知りたい、教えれ

これは避けたいです
 system "traceroute $IP_ADDR";
 @MAC_ADDR = `arp $IP_ADDR`;
0087名無しさん@お腹いっぱい。垢版02/02/06 22:13ID:???
arpって何層のプロトコルでしたっけ?
データリンク?IP使うからネットワーク?
socketは使えないからポート直接操作になるんでしょうか?
008885垢版02/02/06 22:24ID:hksal3H7
>>87

arpは、確か操作端末のスタックメモリーの内容を表示するだけの命令だったと思います
直前に、目的のマシンとTCP/IP通信をしないと情報が得られませんし・・。
0089名無しさん@お腹いっぱい。垢版02/02/06 22:31ID:???
なるほど、TCP/IPで通信するにはMACアドレスを知っている必要がある。ならそのとき使った情報を見ればよいってことで良いでしょうか。
親切にありがとうございました。勉強し直してきます。
0091nobodyさん垢版02/11/28 08:20ID:ArDOlCQW
こんなスレもありましたね。
0093初心者垢版02/12/09 01:21ID:vZ/rPhuU
復帰してもいいですか? 質問してください。
0095Name_Not_Found垢版03/02/17 18:28ID:Kv+xH8ZL
ほとんどのperlスレは山崎渉のレスが最期で終わってるな。
0098山崎渉垢版03/04/20 06:09ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0099山崎渉垢版03/05/22 02:12ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0100山崎渉垢版03/05/28 17:15ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
レスを投稿する


ニューススポーツなんでも実況