トップページ⇒php
1001コメント349KB

Perl コーディング初心者質問コーナー Part35

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/05/26 16:48ID:kkhhiYmo
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0133nobodyさん04/06/04 07:10ID:???
varatermを使ってるんですが、シェル(bash)の標準入力ではbackspaceで
後の1文字を消せるんですが、スクリプトで<STDIN>で入力する時に、
backspaceを使うと、^Hが表示されて文字を消すことができません。
どうすれば文字を消せるようになるのでしょうか。
Perl 5.6.1、Debian 3.0を使っています。
0134nobodyさん04/06/04 07:25ID:???
>>133
それはソフトの問題じゃないのか?
0135nobodyさん04/06/04 07:33ID:???
>>133
^H返すのってわりと普通の動作じゃないんですか?よく聞くんですけど
俺のスクリプト使う奴は全員backspaceコードに^H使うな!
とは言えないので…。
0136nobodyさん04/06/04 08:42ID:???
>>133
それ、Debianのせいじゃない?
どのバージョンでどうなのかは知らんけど。
ttp://www.fastwave.gr.jp/diarysrv/mad-p/200205c.html#20020525-1
Linux板のほうがいいかも。
0137nobodyさん04/06/04 10:24ID:???
>>136
あー、なるほどそうだったんですか…。
どうもありがとうございました。
0138nobodyさん04/06/05 07:36ID:HWhcKEoW
今170行ほどのプログラムを書いたのですが、可視性が悪いので処理ごとにサブルーチンかしようかと思うのですが
それだと処理の重さ軽さなどは変わりますか?
0139nobodyさん04/06/05 07:47ID:???
ベンチマークとってみれ
0140nobodyさん04/06/05 09:45ID:HWhcKEoW
>>139
どうやるの?
0141nobodyさん04/06/05 09:49ID:???
use benchmark;
0142nobodyさん04/06/05 13:37ID:tmR5KH99
ひらがなをカタカナに変換したいのですが、以下のようにするとなぜか"アゥ"と出力されます。何故なんでしょうか?
(UNIX, perl v5.8.0)

#!/usr/bin/perl
$str = "あい";
$str =~ tr/あいうえお/アイウエオ/;
print $str;
0143nobodyさん04/06/05 14:05ID:???
ひらがなやカタカナがマルチバイトだから。
0144nobodyさん04/06/05 14:41ID:6aQba7Dj
>>142
解決策1: Jcodeモジュールのtrを使う

use Jcode;
$str = "あい";
print Jcode->new($str)->tr('あいうえお','アイウエオ');

解決策2: unicode機能を使う

use utf8;
use encoding 'euc-jp', Filter=>1;

$str = "あい";
$str =~ tr/あいうえお/アイウエオ/;
print $str;

use encodingのとこのeuc-jpは適当に自分が使っている
コードにあわせてくれ。
0145未承諾広告※ ◆TWARamEjuA 04/06/05 15:05ID:CuLBZ8wK
>>144
5.8.0 環境とのことですので後者の方ですね。
0146nobodyさん04/06/05 15:06ID:???
フォームを使わずに、POSTでデータを送る事は出来ませんか?
0147プロ固定金土日こと星山成寿(李明煕/イ・ミョンヒ)04/06/05 15:21ID:???
プロ固定金土日こと星山成寿(李明煕/イ・ミョンヒ)
の2ちゃんねるワンポイントアドバイスの時間です。

長年プロ固定してますので、削除とか他人のIP抜き取り個人情報調べ、
2ちゃんねるのアングラの仕事など西村博之の右腕として広範囲な仕事を
任されております。一般に2ちゃんねるは、収益を上げてない個人管理の掲示板
かのように思われていますが、各トピックごとに様々な人間がアクセスしてくる
ため、それらのIPで個人情報を調べた名簿を企業に売買しすることにより、
裏側では巨大な収益をあげております。DHCの裁判でいきなり5億円もの損害賠償
を請求されているのも、彼らの独自の調査によって2ちゃんが裏側で稼いでいる
情報がばれているからにほかなりません。2ちゃんねるでも、ほんの一部の幹部
しかしらない情報としましては、「薬・違法掲示板」の名簿を、覚醒剤の売買
組織に、売り捌いていることです。これに関しては、アングラマネーなので当然
税金もかからず、実は一番の巨大な利益は「薬・違法掲示板」で集まった
シャブ中連中の個人情報を組織に転売することにより得ています。
最近それらの情報に警察や公安が気づき始めたため、西村博之の実家には何度も
ガサ入れ(家宅捜査)に入られており、逮捕への証拠固めとして、国家権力が
動き始めて、かなり立場的には危険になったことは確かです。ですので、
以前ほど堂々と、そのような行為もできなくなってきているので、私も住居を
転々としている次第です。あっ、このことについては、本当に危ない話
なので、他言しないでくださいね。もしばれた場合は、ネタ情報として
逆にでたらめな似通った情報をたくさんネット上に流すことにより、煙に
まいてください。大抵の場合、ガセの情報をたくさん流せば、またネタが
始まったと、冗談で終わります。以前オウム真理教が毒ガスサリンを
自分たちが作っているのに、毒ガスで命を狙われたなどと自作自演した
作戦と同じ手口ですね。よろしくお願いします。
0148nobodyさん04/06/05 15:21ID:???
>>146
できます
014914604/06/05 15:39ID:???
>>148
良かったらやり方を教えていただけませんでしょうか。
0150nobodyさん04/06/05 15:52ID:???
そんな質問をしているぐらいなら教えてもわからんだろ。
何をしたいか詳しく書け。
015114604/06/05 16:11ID:???
パスワードを使ってログインしてファイルを編集する
というCGIなのですが、編集時にもう一回パスワード照合したいんです。
もう一回パスワード入力するのも面倒なのでログイン時に入力したパスワードを
編集用のCGIに渡したいんですが、どうすれば良いでしょうか。
分かりにくくてすみません。
0152nobodyさん04/06/05 16:19ID:???
>>151
それならフツーは hidden で渡すんじゃないの?
別にCookieを食わせてもよいけどさ。
0153nobodyさん04/06/05 16:25ID:???
>>151
フォームを使わずにっていうから何かと思ったらそんなことかよ・・・
そんな単にページ変移毎にパスワードを必要とするありふれた仕組みぐらい
工夫して書けよ。
ほとんどどんなスクリプトでもやってることだろ。
そんなことならスレ違いだし他のスクリプトでも見て勉強してちょうだい。
0154nobodyさん04/06/05 20:33ID:jT/a/NFi
すみません質問です。

Perlにてファイル内の特定文字を検索するにはどういうコードを書けばいいでしょうか?
ファイルの中身を全部配列に入れてjoinして強引に検索出来そうな気もしますが
もっとスマートな方法あったら教えてもらえますでしょうか?
0155nobodyさん04/06/05 21:35ID:???
>>154
ここはコーディングスレなんだからまずは自分で書いてみろ。
0156nobodyさん04/06/05 23:00ID:???
>>154
whileで一行ずつ読み込んではパターンマッチかけるとか

つか、どういうのを「スマート」と想像してるかの方に興味がある
0157nobodyさん04/06/06 00:41ID:timkGFaS
>>144
有り難うございます。
そういう方法しかないのですね。それでやってみます。
0158nobodyさん04/06/06 17:31ID:RQ9IWgny
Perl5.6.1で変数がスカラーかどうかを判断するにはどうすればいいですか?
0159nobodyさん04/06/06 17:34ID:???
>>158
$名前ってのがそうです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
016015804/06/06 17:49ID:RQ9IWgny
説明不足ですみません。
変数に代入されている値がスカラーかハッシュへのリファレンスかで
処理する内容を変えたいのですが,プログラム内部でそれを判断する
方法はないでしょうか?
0161nobodyさん04/06/06 17:49ID:???
下記のようなごく初歩のプログラムがあるんですけど
$noって=$filenameですよね?
なぜ$filenameを$noで再度置き換える必要があるのでしょうか?
後、print "$no";で一度記述してるのに
後にif文で再度同じ事をしてるのはなぜですか?


#! /usr/local/bin/perl

# ログファイル名
$filename = "count.txt";

# ファイルを開く
if (!open(FP,"$filename")) { # 失敗
$no = 0;
} else { # 成功
$no = <FP>;
close(FP);
}


# 1つ増やす
$no++;

print "$no";

if (!open(FP,">$filename")) { # 失敗
print "ファイル $filename がオープンできませんでした ($!)\n";
}else{
 print FP $no;
close(FP);
}
0162nobodyさん04/06/06 18:01ID:???
>>161
> $noって=$filenameですよね?
既にこの時点で(略
0163nobodyさん04/06/06 18:42ID:???
>>160
ref <変数> でリファレンスかそうでないかがわかるよ。
リファレンスじゃないなら偽。
リファレンスなら、種類によってARRAYとかHASHとかが返される。
0164nobodyさん04/06/06 18:56ID:kS2UjgnM
フォームのテキストボックスに「にほんご」と入力し送信したところ、
「\x{0082}ノ\x{0082}ル\x{0082}\x{00f1}\x{0082}イ」
と、表示されてしまいました。

「use encoding 'shift_jis';」を指定しており、
もし「use encoding 'shift_jis';」の一行を取り除くと、
ちゃんと「にほんご」と表示されます。

「use encoding 'shift_jis';」を指定した場合も、、
「にほんご」と表示されるようにするには、どうしたらよいでしょうか。

環境
ActivePerl 5.8.3 Build 809
Windows XP Pro SP2, IIS
016516404/06/06 18:57ID:kS2UjgnM
受信のソースです
--- ここから ---
use CGI;
use encoding 'shift_jis';

$cgi = CGI::new();
$text1 = $cgi->param('text1');

print <<EOM;
Content-type: text/html

<HTML>
<BODY>
$text1<br>
</BODY>
</HTML>
EOM
--- ここまで ---
016616004/06/06 19:09ID:???
>>163
うまくいきました。ありがとう。
XML::Simpleで取り出したデータ構造が,同じ階層でスカラだったり,
ハッシュだったりしたので困ってました。

漏れが買った本には載ってなかったけど新しい関数だからかな?

<参考>
ttp://www.futomi.com/cgi-bin/lecture/perl5ref.cgi?MODE=CATEGORY&CATENO=21
ttp://www.futomi.com/cgi-bin/lecture/perl5ref.cgi?MODE=DISP&FUNC=ref
016716104/06/06 20:05ID:ZCQZgjkY
この部分イフの前にプリントしてる
のに後にイフで再度書き込もうとしてるのはなぜですか?

print "$no";

if (!open(FP,">$filename")) { # 失敗
print "ファイル $filename がオープンできませんでした ($!)\n";
}else{
 print FP $no;
close(FP);
}
0168nobodyさん04/06/06 20:18ID:???
なぜですかと聞かれても、必要があるからじゃないですか?としか答えられないの。私。

print "$no";

if (!open(FP,">$filename")) { # 失敗
print "ファイル $filename がオープンできませんでした ($!)\n";
}else{
 print FP $no;
close(FP);
}

print "$no";

したらどうよ。
0169nobodyさん04/06/06 20:20ID:???
>167
後ろの方には FP が入ってるわけですが、そこんとこどうよ?
0170nobodyさん04/06/06 20:35ID:ZCQZgjkY
print "$no"; がhtmlへの書き込みを示してて、
print FP $no; がcount.txtへの書き込みという事ですか?
0171nobodyさん04/06/06 20:38ID:???
おっ、上達してきたぞ。
0172nobodyさん04/06/06 20:39ID:???
ちょっと違うな。
とりあえずファイルハンドルを知れ。
0173nobodyさん04/06/06 21:03ID:???
ファイルハンドルとはファイルにつける
固有名詞で通常大文字で記述する。
print FP $no;
のような形式はファイル自身に書き込むこと。

ですよね?
あれ?なんでファイルハンドルつける必要あるのですか?
0174nobodyさん04/06/06 21:04ID:qBVB6Avx
すみません。
benchmark.pmを使った際の出力結果
例えば
0 wallclock secs ( 0.02 usr 0.00 sys + 0.02 cusr 0.01 csys = 0.05 CPU)
というのは何を表すのでしょうか(処理時間であるということぐらいはわかりますが)
wallclock secs,usr,sys,cuser,csys,cpuってそれぞれなんなんですか?
usrはユーザ側の処理時間??

あと同じCPUでも
0 wallclock secs ( 0.02 usr 0.00 sys + 0.02 cusr 0.01 csys = 0.05 CPU)
2 wallclock secs ( 0.02 usr 0.00 sys + 0.03 cusr 0.00 csys = 0.05 CPU)
のようにwallclock secsに大きな違いが出るのは何故なんでしょうか?
0175nobodyさん04/06/06 21:20ID:???
wallclock secs: 実時間(起動してから終わるまでの時間)
usr: (そのプログラム自身が)ユーザモードで消費したCPU時間
sys: (そのプログラム自身が)カーネルモードで消費したCPU時間
cusrとcsysはそのプログラムから起動された子プロセスが消費した分
最後のx.xx CPUはそれらの合計。

実時間は他のプログラムが動いていたり、IOの待ちがあったりすると
かなり変動する。
0176nobodyさん04/06/06 21:49ID:???
>>174 ついでに有効桁も学習しとけよ
0177nobodyさん04/06/06 22:43ID:???
糞の>>160のはいなくなったか。
二度と来るなよ。 ( ゚д゚)、ペッ
0178nobodyさん04/06/06 23:24ID:ZCQZgjkY
ほっ、俺じゃなかった。
0179nobodyさん04/06/06 23:33ID:???
>>178
で、理解できたのか?
0180nobodyさん04/06/06 23:42ID:???
>>164
S-JISで書いていないんじゃないのか?
0181nobodyさん04/06/06 23:47ID:???
>>179
もう一回参考書読んできます。
いまいちファイルハンドルの意味自体わかってない気がするので。
0182nobodyさん04/06/06 23:53ID:???
>>181
ファイルハンドルはどうでもいいんだけど、最初の「if文で再度同じ事をしてる」は
書き方がヘタなだけだろう。
0183nobodyさん04/06/06 23:56ID:???
>>182
あのスクリプト自身があまりうまく出来てないと言うことですかね、
と言うことは私の疑問もあってるんでしょうか。
一応参考書の例文なのですが。
0184nobodyさん04/06/07 00:05ID:???
参考書じゃああいう書き方で説明することはあるのかもな。

疑問とは?

>$noって=$filenameですよね?
これか?違う

>print "$no"; がhtmlへの書き込みを示してて、
これか?違う

>print FP $no; がcount.txtへの書き込みという事ですか?
これか?そう
0185nobodyさん04/06/07 00:49ID:T5+evT2p
3万個ほどファイルがあるディレクトリを開いて、readdirでリストを取得すると、
数十〜数百個ほど取りこぼしがあるのですが、これって既出ですか?

もしそうならすいません。確実に取得できる方法はありますか?

ファイル名でソートしてちゃんと時系列で処理をしたいのですが、この問題のために
作れなくて困っています。
0186nobodyさん04/06/07 00:59ID:???
>>185
そのコードを見てみたいものだな。
0187nobodyさん04/06/07 01:04ID:???
>>184
1個目、2個目なのですがまず1個目は
$filenameから読み込んだ数値を$noとするということでしょうか?
2個目だけはどうしても必要とは思えないのですが。
その後、ifで再度書き込まれるわけですし。
0188nobodyさん04/06/07 01:13ID:???
>>185
これに引っかかってる?
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm#file
0189nobodyさん04/06/07 01:36ID:???
>>187
>$filenameから読み込んだ数値を$noとする
そう。ファイルハンドルをスカラ変数に代入は1行読み込み。

>2個目
print "$no"; は標準出力へ$noの値を出力。
print FP $no; はファイルへ$noの値を出力(書き込み)。

必要あるなしなんて書いたやつがそうしたかったのだろうよ。
0190nobodyさん04/06/07 01:39ID:???
>>187
名前に元質問のレス番を入れろ。
コーディングスレなんだから「私の疑問も・・・」とか「1個目、2個目」なんて
書かずにどのコードについてなんなのかもうちょっと文章を考えて書け。
0191nobodyさん04/06/07 04:40ID:???
ものすごく基礎的な事なんですけど……。
どこがおかしい、もしくは基本的に間違いと言う所をご指摘願います。

#行数・項目数(, 区切り)とも不確定のCSVファイルを読み込み、
#@page2 に $page[n行目][n項目] と言った感じの2次元配列で格納したい

open (IN, "./link.csv");
my @page = (<IN>);
close (IN);

my (@line, $i, @page2);
$i = 0;
foreach (@page){
@{$line[$i]} = split(/,/);
push(@page2, @line);
}
print $page2[3];

#@page2 の中の3行目を表示したいけど、結果は ARRAY(0x155c7c8) と出る
#$page[3][3] とすると、最後の行の目標項目が表示される
0192nobodyさん04/06/07 05:02ID:???
>>164
しっかりファイル頭でuse宣言してる?
0193nobodyさん04/06/07 05:53ID:???
>>191
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perllol.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perldsc.html
019419104/06/07 06:53ID:???
>>193
ありがとうございます。
まさに知りたかった事が載ってました。
ここ読んで、やり直してみます。
0195nobodyさん04/06/07 08:45ID:mlYstQXa
>>175さん
ありがとうございました。

>>176
有効桁は・・・昔BASICをやってたときに#をつけると倍精度とか・・・
(よくわかってないんで自分で調べてみます)
019616404/06/07 12:47ID:c3dnKsSQ
>>180 >>192
ようやく解決できました。

>>165 のように書いてしまっていたので、指摘の通り、
「use encoding 'shift_jis';」をまずはじめに書くように直しました。

なおかつ、それでも化けていたのですが、
「use encoding 'shift_jis';」に「Filter=>1」を加えたところ、
ようやくきちんと「にほんご」と表示できました。
どうもです。
0197nobodyさん04/06/07 13:27ID:???
質問です。
サブルーチンの呼び方に関してなのですが、例えばjcodeですと
jcode'convert (*value, "sjis");  ← Perl4
jcode::convert (\$value, "sjis");  ← Perl5
などの書き方ができますよね。
Perl5ならどちらの記述でも動きますが、
Perl4にも対応させるなどの汎用性という面では、
常にPerl4の記述で書いたほうがいいのでしょうか?
0198nobodyさん04/06/07 13:39ID:???
使わなきゃいいじゃん。

↑ >>197がいいこと言った!
0199nobodyさん04/06/07 13:49ID:???
CGIとして配布するならともかく、
わざわざ古い書式を使うこともあるまい。
0200nobodyさん04/06/07 13:50ID:???
>>197
君が赤ラクダを持っているならともかく、今時 Perl4 で
問題なく動くスクリプトを書く方が難しいと思うがな。

jcode'convert(*value, "sjis"); # ×
&jcode'convert(*value, "sjis"); # ○

ま、自己満足以外のメリットは殆どないが、やりたきゃご自由に。
http://flex.ee.uec.ac.jp/texi/perl/perl_toc.html
0201nobodyさん04/06/07 14:25ID:???
赤ラクダのヨブの話は好きだったんだが
あれを Perl5.8 対応にしてヨブが粘土板を UTF-8 で刻むようなチュートリアルが読みたい
0202nobodyさん04/06/07 17:08ID:SF6UmQvx
This is perl, v5.8.0 built for i386-linux-thread-multi です。
あるデレクトリのテキストファイルのみを取得したいのですが、

opendir DIR, '/home/foo/bar' or die;
@files = grep { -f }readdir DIR;
print join("\n", @files);

とすると空でなにも表示されません。2行目を

@files = grep { !-d }readdir DIR; # デレクトリではないもの

とするとデレクトリ以外のファイルが取得できます。
ファイルテスト演算子「-f」では取得できないのですか?
0203nobodyさん04/06/07 17:45ID:???
>>202
readdir で得られるファイル名はフルパスでないからぢゃよ
020420204/06/07 17:51ID:SF6UmQvx
>>203
返事、ありがとうございます。
そうかとも思ったんですが、ならば !-d で判定できているのは…んん?

えーとあれですかね、この場合判定できているのではなくて、
存在しない->よって「!-d」も真値が返ってきてる、って事ですか?
つまり判定できているわけではないってこと?
020520204/06/07 17:54ID:SF6UmQvx
>>204
すいません、フルパスで -f で大丈夫でした。
お騒がせしました。
0206nobodyさん04/06/07 20:46ID:UI3v3779
スレ違ったので移動

掲示板CGIにアクセス解析CGIを組み込みたいと思ってます。
Bodyの中にタグとして書き出すのでなく、CGIの中で完結させたい
(ソースを見てもわからないようにしたい)のですが、
具体的にどのようにすればいいのでしょうか。
サブルーチンで解析CGIを呼び出す、というヒントは読んだのですが
呼び出しの記述の仕方がわかりません。
なんとなくこんなふう書くのではないかと思うのですが↓

sub access {
  ??? = './acc/acc.cgi?a=b&&c=d';
}

どなたかアドヴァイスおねがいできませんか!
0207nobodyさん04/06/07 20:55ID:???
>>206
改造スレで見てもらったほうがいいよ。
0208nobodyさん04/06/07 20:59ID:???
検索したほうがいいよ
0209nobodyさん04/06/07 21:02ID:SF6UmQvx
あるcommand があり、
system("/home/hoge/bin/command arg > file");
とするとcommand の出力はfileに書き出されます。

@array = system("/home/hoge/bin/command arg");
としても@arrayには何も格納されません。

シェルから
$ /home/hoge/bin/command arg
とすると出力が画面に表示されます。

command の仕様には「標準出力に表示します」とあるだけです。

訳あってこれ以上の情報が取得できない状況です。

command の出力を変数に取り込むにはどうすればいいんでしょうか。
0210nobodyさん04/06/07 21:02ID:???
一つ言えるのは掲示板なんぞに解析し込む馬鹿はキモイ。
ついでにプログラミングは100年は早い。
021120604/06/07 21:08ID:???
>>207
ありがとう、そうします。
0212nobodyさん04/06/07 21:14ID:???
>>208
アクセス解析 掲示板cgiに 埋め込む

などでは検索しましたが・・・
何かいい検索ワードあったら教えてください。
0213nobodyさん04/06/07 21:16ID:???
一つ言えるのは掲示板なんぞに解析し込む馬鹿はキモイ。
ついでにプログラミングは100年は早い。
おまけに日本語を喋れない。
0214nobodyさん04/06/07 21:29ID:???
>>209
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq8.html#Why_can_t_I_get_the_output_of_a_
021520904/06/07 21:32ID:???
>>214
@array = `/home/hoge/bin/command arg`;
なんですね。
ありがとうございました。
0216nobodyさん04/06/08 01:10ID:???
ちょっとお聞きしたいのですが、
例えば

@data = 1 2 3 4 5 〜 100

があり その中のある数にもっとも近いモノからソートすると言う事は出来るでしょうか?
例えば↑の配列 5 に一番近い数字からソートすると 4 6 が先頭の並び順になる…というような感じなんですが…。
ちょっと無理っぽいような気もするのですが可能ならば何卒お教え下さいませ。
0217nobodyさん04/06/08 01:36ID:???
absでワンクッション挟め
0218nobodyさん04/06/08 01:47ID:???
>>216
> 5 に一番近い数字からソートすると 4 6 が先頭
どっちなんだよ?

@new = sort(grep($_ >= 5, @data));

5を好きなように変えれば?
0219nobodyさん04/06/08 06:03ID:???
>>216
@data = sort{ abs($a-5) <=> abs($b-5) } @data;
0220nobodyさん04/06/08 14:30ID:???
perlのcrypt関数でパスワードをcryptし、

user(add|mod) -p 暗号化パスワード -s /bin/true -d /home/www/アカウント アカウント

でユーザの追加、変更を行っているのですが、例えば、「test」というパスワードを設定
すると、「test」でも「test999」でも「test48278467276484」でもFTPで認証できてしまい
ます。つまり、「test*」で認証できてしまいます。
「test」をusermodで「test876」にしても、上記同様関係なく「test*」で認証できて
しまいます。

デフォルトで用意されている「admin」というアカウントではこのような症状にはなら
ないので、どうもuseradd|mod側で使っている「-p」の暗号化したパスワードが怪しいの
ですが、解決に結びつかず、1日が経過してしまいました。

もしも何か解決策がありましたら、どうかご教授ください。
0221nobodyさん04/06/08 15:41ID:???
>>220
OSはなによ?
デフォのcrypt関数ならそれで正常。
0222nobodyさん04/06/08 15:52ID:???
>>220
8文字以降無視ってのはよくきくしそういう仕様だけど、
4文字でだめってのは初耳だ。
0223nobodyさん04/06/08 16:04ID:???
ほっとけよ。
perlに関係ないことだ。
0224nobodyさん04/06/08 17:13ID:???
>>221
普通cryptは先頭8文字だが
0225nobodyさん04/06/08 17:50ID:???
ディレクトリを無理やり削除するには
system ("|rm -r $dir");
で桶ですか?
0226nobodyさん04/06/08 18:10ID:???
-rf
022722004/06/08 18:48ID:???
皆様、ご返答有難うございます。
現在も模索中でございます。

>>221
Redhat9です。

>>222
「testtest」と設定しても、testtest*になって
しまうようです、、、
0228nobodyさん04/06/08 19:02ID:???
数字と英文字混ぜてテストしてみたか?
0229nobodyさん04/06/08 20:17ID:???
>「testtest」と設定しても、testtest*になって
>しまうようです、、、

とりあえずそれは正常だ。
023022004/06/09 02:55ID:???
>>228
「test123test」とやってみましたが、同じように「test123test*」
で認証できてしまいました。

>>229
正常なのですか?
はじめから用意されていた「admin」というアカウントでは、
このパスワード入力方法では通用しませんでした。
0231nobodyさん04/06/09 03:05ID:???
>>230
板違い。Linux板へ逝け。
0232206 04/06/09 06:49ID:siBsh0Gf
>>206 です
改造スレできいてみましたが、あちらでもスレ違いなのだそうです。
やはりここしかないのかと思います。
あちこち行ってますが、重複投稿でなく誘導ということでご容赦ください。

>>206のようにcgiでcgiを呼び出して使ってる方はいないでしょうか?
requireでもopen(<IN>, "**.cgi")でも駄目でした。
検索をしても、cgiのBody内に解析のタグを仕込む方法ばかり出てきてしまいます。
ヒントだけでもよいのでおねがいいたします。
■ このスレッドは過去ログ倉庫に格納されています