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

Perl 初心者コーナー Part23

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

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。


CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
0412nobodyさん 03/05/26 05:19ID:???
>>408 $dataつーのが、最後に改行が有るものと仮定するとして・・・

$data =~ tr/\x0d\x0a//d;
が高速。
0413nobodyさん03/05/26 06:37ID:qholo4T7
ユーザごとにリストボックスの項目数を変えるよな
ことを考えてるのですがこれって実現可能ですか。
リストで表示させる項目を一つの変数の中にまとめて
"a","b","c"と書いても実行するとリストは"a","b","c"と
繋がって表示されてしまい1項目しかでなかったものでして。
ある人は10個項目でててある人は5項目でてるような
ことがしたいのです。
0414nobodyさん03/05/26 09:30ID:???
>>413
マルチポストはやめましょう。
0415nobodyさん03/05/26 10:06ID:???
>>413
言ってる意味がよーわからんので推測でだが、出来る。
ユーザごとに指定した数を指定しておいて、配列をその数だけ
回すなりなんなりでいいんじゃん?
0416nobodyさん03/05/26 10:19ID:???
>>114
添付ファイルはどこに誰が保存しているのか?
そのファイル名はメール内でのファイル名だと思うのだが

>>119
$?
0417nobodyさん03/05/26 10:20ID:???
レス番号激しく間違えた…スマソ

>>414
添付ファイルはどこに誰が保存しているのか?
そのファイル名はメール内でのファイル名だと思うのだが

>>419
$?
0418nobodyさん03/05/26 10:36ID:???
>>417
で、今度は誤爆?
0419nobodyさん03/05/26 10:36ID:???
>406
未だにPerl4の鯖だってあるんだよ。
0420nobodyさん03/05/26 11:01ID:X5HT6fof
@orgmaster= ("orgid","countryid","orgname");
$orgid = $line{'orgid'};
$countryid = $line{'orgname_ja'};
$orgname = $line{'orgname'};


っていうのを、後ろの3行をベタにこういう風↑に書かないで、
foreach $value (@orgmaster) {
★ここが不明★ = $line{$value};
}

というようにまわしたいのですが、
★ここが不明★の部分がわかりません。どうすればいいのでしょうか?
0421bloom03/05/26 11:08ID:gUjk1KcM
http://homepage.mac.com/ayaya16/
0422nobodyさん03/05/26 11:13ID:???
>>420
ソフト・リファレンスでググってみ。
042342003/05/26 11:42ID:???
>>422
がってんわかりました。ありがとうございます。
0424nobodyさん03/05/26 12:52ID:???
$ORG{'person'}[1]、$ORG{'adana'}[1]、$ORG{'adanaid'}[1]
$ORG{'person'}[2]、$ORG{'adana'}[2]、$ORG{'adanaid'}[2]
$ORG{'person'}[3]、$ORG{'adana'}[3]、$ORG{'adanaid'}[3]
$ORG{'person'}[4]、$ORG{'adana'}[4]、$ORG{'adanaid'}[4]
$ORG{'person'}[5]、$ORG{'adana'}[5]、$ORG{'adanaid'}[5]

という変数があるのですが、これを、
$ORG{'adanaid'}[n]の値でソートして、例えば、

$ORG{'person'}[2]、$ORG{'adana'}[2]、$ORG{'adanaid'}[2]
$ORG{'person'}[5]、$ORG{'adana'}[5]、$ORG{'adanaid'}[5]
$ORG{'person'}[4]、$ORG{'adana'}[4]、$ORG{'adanaid'}[4]
$ORG{'person'}[3]、$ORG{'adana'}[3]、$ORG{'adanaid'}[3]
$ORG{'person'}[1]、$ORG{'adana'}[1]、$ORG{'adanaid'}[1]

みたいに表示さすにはどうすればいいのでしょうか?
042540803/05/26 13:58ID:???
>>411
そーだったんですか・・・知らなかった(-_-;)
>>412
それ使わせてもらいます。
どうもありがとうございました。
0426nobodyさん03/05/26 14:22ID:???
Perlのgrepって、小文字大文字の区別をなくすオプションってないんでしょうか?
042742603/05/26 14:23ID:???
すいません、ありましたね。iオプションで。
手元のリファレンスには何にもかいてなかったもんで
0428nobodyさん03/05/26 15:09ID:ave5j164
例えば、
http://www.2ch.net/dir/file.txt
という文字列を、
/dir/file.txt
のようにするにはどちらが効率的なんでしょうか?

# 正規表現のみの場合
$url =~ s/http:\/\/.*?\//\//i;

# 関数も使う場合
$url =~ s/http:\/\///i;
@temp = split(/\//, $url);
shift(@temp)
$url = "/" . join("/", @temp);
0429nobodyさん03/05/26 15:32ID:???
>>428
どちらでも好みの方を。
速度が速い方が良いなら、100回くらいループさせてベンチ取ればいい。
0430nobodyさん03/05/26 15:49ID:???
>>424
http://flex.ee.uec.ac.jp/texi/perl/perl_54.html
043142403/05/26 17:42ID:???
>>430
たぶん、おっしゃってるのは、そのページの一番最後の

sub reverse { $b cmp $a; }
@harry = ('dog','cat','x','Cain','Abel');
@george = ('gone','chased','yz','Punished','Axed');
print sort @harry;
  # 出力は AbelCaincatdogx
print sort reverse @harry;
  # 出力は xdogcatCainAbel
print sort @george, 'to', @harry;
  # 出力は AbelAxedCainPunishedcatchaseddoggonetoxyz

を参考にできるということなのだと思うのですが、
print sort @george, 'to', @harry; の意味がわかりません。
sort LIST, 'to', LISTなんて書式の意味も、書いてないし。。。
この書式で探したのですが、わかりませんでした。。。
どういうことなのでしょうか?
043235603/05/26 20:54ID:???
>>431
> print sort @george, 'to', @harry; の意味がわかりません。
結果からして、
print sort((@george,'to',@harry));
なんぢゃないかなと逝ってみる震度6弱。
0433nobodyさん03/05/26 21:08ID:haPyfOxB
&ReadParse(*in);
$n_pass = "$in{'password'}";
# パスワード
$pass = '0123';
if($pass eq $n_pass)
こうするとできるのに、

# パスワード
$pass = '0123';
if($pass eq $in{'password'}")
こうすると、すべてパスワードが違うとでます。フォームから渡せてないんでしょうか?
0434nobodyさん03/05/26 21:09ID:haPyfOxB
if($pass eq $in{'password'}")
↓
if($pass eq $in{'password'})
です。
0435動画直リン03/05/26 21:10ID:gUjk1KcM
http://homepage.mac.com/hitomi18/
043643103/05/26 21:21ID:XWjbOab7
>>432
あー。。。了解すますた。
0437nobodyさん03/05/26 22:23ID:???
>>433
後者でもちゃんと &ReadParse; やってる?
0438nobodyさん03/05/26 22:32ID:haPyfOxB
>>437
え?&ReadParseって、cgi-libのライブラリのでしょ?
$in{'password'}
こうやったらライブラリいらないんじゃないんですか?
どっちにしてもライブラリはいるんですか?
0439nobodyさん03/05/26 22:43ID:???
>>438
なんかねぼけたこと言ってる奴だな……

PerlはCGI専門言語じゃない。
ブラウザのフォームから送られたデータを取得するには、
それ相応のステップをふまなければならない。
なにもしなければ、%inは空のままだ。
当たり前だ。何もしなかったんだから。

顔洗って出直してきなさい。
0440nobodyさん03/05/26 22:48ID:haPyfOxB
>>439
そんな・・・
方法を教えてください。お願いします
044144003/05/26 22:51ID:haPyfOxB
あまったれてすいません。検索すればいくらでもでてきますね。
要はPOSTの場合
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
で読み取って、splitできりきざんでやればいいんですね。
0442nobodyさん03/05/26 22:55ID:???
つうか、&ReadParse使えば?
044344003/05/26 23:02ID:haPyfOxB
>>442
それでもいいんですけど、あんまりライブラリを使うのが好きじゃないんですよ・・・
全部で10行くらいだから中にいれてもいいかな〜って・・
044444003/05/26 23:04ID:haPyfOxB
何回も書き込みすいません。
cgiを使う側の場合、
・cgiソースは簡潔がいいからライブラリ使う。
・ソースが多少多くてもいいからライブラリはできるだけさける。
どっちがいいんですかね?
0445_03/05/26 23:09ID:???
http://homepage.mac.com/hiroyuki43/hankaku09.html
0446bloom03/05/26 23:10ID:gUjk1KcM
http://homepage.mac.com/ayaya16/
0447nobodyさん03/05/26 23:24ID:???
やっぱり何か寝ぼけてるなぁ・・・
0448nobodyさん03/05/26 23:28ID:???
>>444
人によって違うんじゃないかな。何を求めるのかによって。
ここで判断をあおぐようなことじゃないと思う。

044944003/05/26 23:33ID:haPyfOxB
>>448
そうですね。レスサンクス。
realParseだけなんで中に書きます
0450nobodyさん03/05/26 23:36ID:x8s60k6p
目的によってシステムを構築しなさい
その際、じっくりと頭の中でシステムを描きなさい
そうすればおのずと答えは出てきます
0451nobodyさん03/05/27 00:16ID:???
>>444
マジレスするなら……

俺は開発速度を優先するべき状況にいるので、
ライブラリはとことん利用する立場だ。
Perlの場合はモジュールが便利だ。CPANを見るべし。

ライブラリを使えば、ソース自体を短くすることができ、
短いソースは同時にバグの入る確率が少なくなることを意味する。
副次的にバグの絶対数を下げる効果も期待できる。
(ライブラリにバグが入ってたらどうしようもないが、
 自分よりも能力のある人間(作者)を信じて突き進むのみだ)

ま、好きにしろい。
0452nobodyさん03/05/27 00:18ID:LZ3W66wZ
>>438
いると思う。
自分でフォームデコード書くならいらないけど。
045345203/05/27 00:22ID:LCoN4Nuw
しくった。

漏れは勉強がてら、
ライブラリに頼らず自分でコード書く。
045442403/05/27 00:56ID:tldcRAHy
SORT のマニュアルを読んでやってみたのですが、どうもうまくいきません。

$ORG{'person'}[1]="tanaka";   $ORG{'adana'}[1]="tanachan";  $ORG{'adanaid'}[1]=5;
$ORG{'person'}[2]="takada";   $ORG{'adana'}[2]="takachan";  $ORG{'adanaid'}[2]=2;
$ORG{'person'}[3]="imai";     $ORG{'adana'}[3]="imachan";   $ORG{'adanaid'}[3]=3;
$ORG{'person'}[4]="takenaka";  $ORG{'adana'}[4]="takechan";  $ORG{'adanaid'}[4]=1;
$ORG{'person'}[5]="hirano";   $ORG{'adana'}[5]="hirachan";  $ORG{'adanaid'}[5]=4;

で、
foreach ($key {sort { $ORG{'adanaid'}[$a] <=> $ORG{'adanaid'}[$b] } @ORG{'adanaid'}){
 print qq|\$ORG{'person'} = $ORG{'person'} , \$ORG{'adana'} = $ORG{'adana'}, \$ORG{'adanaid'} = $ORG{'adanaid'}<br>|;
}
としたら、
compilation errors.になってしまいます。
思うに、@ORG{'adanaid'}があやしいのかとも思うのですが、
ただしい記法はどうすればいいのでしょうか?
($ORG{'adanaid'}[1], $ORG{'adanaid'}[2], $ORG{'adanaid'}[3], $ORG{'adanaid'}[4], $ORG{'adanaid'}[5])
という意味の配列を表したつもりなのですが・・・
0455動画直リン03/05/27 01:10ID:77ADrmTJ
http://homepage.mac.com/hitomi18/
0456nobodyさん03/05/27 01:10ID:???
>>454
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perllol.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlref.html
045745403/05/27 01:28ID:tldcRAHy
>>456
あー、それですねー。実は前に読んでちんぷんかんぷんで、
そのままにしてました。。。
しかし、今読んでもちんぷんかんぷん。。。
(わからない用語ばかりで、用語を調べるとよけいにわからなくなる(泣))

もしよかったら、恐縮がですが、
($ORG{'adanaid'}[1], $ORG{'adanaid'}[2], $ORG{'adanaid'}[3], $ORG{'adanaid'}[4], $ORG{'adanaid'}[5])
を配列として表す方法を教えていただけませんjか?
そしたら、演繹的に勉強していきますので・・・。
0458nobodyさん03/05/27 01:49ID:???
>>454
データ形式を見直したほうがいいのでは……
それと、$ORG{}[0]の要素が未定義じゃマズいでしょ。それもソートの対象になるんだから。
045945403/05/27 01:59ID:tldcRAHy
>>458
あ、ほんとですね。。。ありがとうございます。
0460nobodyさん03/05/27 02:25ID:???
>>457
こういうのは実際に最小限のコードをどんどん書いて実際に
走らせながら理解していくのが一番早いし身につくんだが…。

@list = ('a', 'b', 'c');
$list = \@list; # \ で配列 @list のリファレンスを得る
print $list; # "ARRAY(0xbb1350)" ← $list の中身は配列のリファレンス
print @{$list}; # "abc" ← @{} で配列としてデリファレンス
print @$list; # {} を省略した書き方

# [] で無名配列のリファレンスを作成
# @list のように変数名が無いから「無名」
$list = [ 'd', 'e', 'f' ];
print $list; # "ARRAY(0xbb135c)"
print @{$list}; # "def"

%hash = (a => 1, b => 2, c => 3);
print "$_:$hash{$_}/" foreach sort keys %hash;
# "a:1/b:2/c:3/"

%hash = (a => [0..3], b => [4..7], c => [8..11]);
print "$_:$hash{$_}/" foreach sort keys %hash;
# "a:ARRAY(0xbb1350)/b:ARRAY(0xbb1374)/c:ARRAY(0xbb1398)/"
# $hash{'a'} の中身は配列のリファレンス

print @{$hash{'a'}}; # "0123" ← @{} で配列としてデリファレンス

これでもう分かるよな?
046145703/05/27 11:13ID:OknXPD/2
>>460
リファレンスについて、随分わかってきました。
print @{$ORG{'adanaid'}};
で、配列要素一覧が取り出せることもできました。

ただ・・・もう少しおつきあいねがえませんでしょうか?(非常に恐縮です)
同じりくつで、

foreach ($key {sort { @{$ORG{'adanaid'}}[$a] <=> @{$ORG{'adanaid'}}[$b] } @{$ORG{'adanaid'}) {
  print qq|\$ORG{'person'} = $ORG{'person'} , \$ORG{'adana'} = $ORG{'adana'}, \$ORG{'adanaid'} = $ORG{'adanaid'}<br>|;
}
とやったのですが、コンパイルエラーになってしまいます。
print @{$ORG{'adanaid'}}[1]は動くから、そのまま1を$aと$bに変えればいいかと思ったのですが・・・
0462_03/05/27 11:24ID:???
http://homepage.mac.com/hiroyuki43/jaz07.html
0463nobodyさん03/05/27 11:43ID:???
>>461
次はsortの動きについて勉強しようね。
誰か、心優しい人はどぞ。↓
0464nobodyさん03/05/27 12:10ID:???
>>461
まず「コンパイルエラー」みたいな曖昧なエラー名はやめよう。
必ず表示されたエラーメッセージを正確に書くこと。

そのソース、実行してみたけど syntax error at hoge.pl line 7, near "})" とか、
あまりに初歩的なミスをやってる。foreach の使い方もヘン。
データの管理法も、あまりソートとかに向いてない形式だから変えたほうがいいと
個人的には思う。
漏れも試行錯誤してみたが、データを一度結合してからソートして、ループ内で
また分割するという非効率な方法しか思いつかなかった。
046546103/05/27 13:03ID:???
>>464

KCatch.pmを使っていたのですが、
コンパイルエラーとしかいってくれなかったので、そういうもんだと思ってました。。。
すみません。

別のものに変えてみようかしら
0466nobodyさん03/05/27 13:09ID:???
>>465
kcatchってそういうもんなの?
CGI::Carpを使ってみては。(使い方はぐぐってね)
もっとも、コマンドラインで実行させるのが一番手っ取り早いんだけど。
0467nobodyさん03/05/27 13:14ID:???
「ぐぐって」とは?
0468nobodyさん03/05/27 13:16ID:???
>>467
googleで検索して
http://www.google.co.jp/
046946503/05/27 13:20ID:???
>>466
use CGI::Carp qw(fatalsToBrowser);
したら、
「Software error:
Execution of test.cgi aborted due to compilation errors.
For help, please send mail(以下略)」と・・・
なんでだろう
0470nobodyさん03/05/27 13:33ID:???
ソース晒せ
047146503/05/27 13:51ID:???
>>470
foreachの部分をコメントアウトすると、正常です。
入れると、「コンパイルエラー」だそうです。
------------------------------------------------------------

$ORG{'person'}[1]="tanaka";$ORG{'adana'}[1]="tanachan";$ORG{'adanaid'}[1]=5;
$ORG{'person'}[2]="takada";$ORG{'adana'}[2]="takachan";$ORG{'adanaid'}[2]=2;
$ORG{'person'}[3]="imai"; $ORG{'adana'}[3]="imachan";$ORG{'adanaid'}[3]=3;
$ORG{'person'}[4]="takenaka"; $ORG{'adana'}[4]="takechan";$ORG{'adanaid'}[4]=1;
$ORG{'person'}[5]="hirano";$ORG{'adana'}[5]="hirachan";$ORG{'adanaid'}[5]=4;
#print @{$ORG{'adanaid'}}[1];
print @{$ORG{'adanaid'}};

foreach ($key {sort { @{$ORG{'adanaid'}}[$a] <=> @{$ORG{'adanaid'}}[$b] } @{$ORG{'adanaid'}) {
   print qq|\$ORG{'person'}[\$key] = $ORG{'person'}[$key] , \$ORG{'adana'}[\$key] = $ORG{'adana'}[$key], \$ORG{'adanaid'}[\$key] = $ORG{'adanaid'}[$key]<br>|;
}
0472nobodyさん03/05/27 14:02ID:???
Software error:

syntax error at test.pl line 11, near "}) "
syntax error at test.pl line 13, near "}"
Missing right curly or square bracket at test.pl line 13, at end of line
Execution of test.pl aborted due to compilation errors.

For help, please send mail to this site's webmaster, giving this error message
and the time and date of the error.

うちでやったらこう出たが……(Win2000+ActivePerl5.6.1)
本当に>>469しか出なかったの?
っていうか、あなたの実行環境ってどんなん?
047346303/05/27 14:22ID:???
>>471
・・・汚ねぇソース・・・

$ORG[0] = {
  "person" => "tanaka",
  "adana" => "tanachan",
  "adanaid" => 5,
};
$ORG[1] = {
  "person" => "takada",
  "adana" => "takachan",
  "adanaid" => 2,
};
$ORG[2] = {
  "person" => "imai",
  "adana" => "imachan",
  "adanaid" => 3,
};
$ORG[3] = {
  "person" => "takenaka",
  "adana" => "takechan",
  "adanaid" => 1,
};

つづく
047446303/05/27 14:22ID:???
$ORG[4] = {
  "person" => "hirano",
  "adana" => "hirachan",
  "adanaid" => 4,
};

@tmp = sort { (${ORG[$a]->{adanaid}} <=> ${ORG[$b]->{adanaid}}) } 0 .. $#ORG;
foreach (@tmp) {
  print 'person='. $ORG[$_]->{person}. "\n";
  print 'adana='. $ORG[$_]->{adana}. "\n";
  print 'adanaid='. $ORG[$_]->{adanaid}. "\n";
}
exit(0);

こんな実行結果がお望みですか。
タブは見やすいように全角スペース
0475nobodyさん03/05/27 14:22ID:Z3njAYJb
>foreach ($key {sort { @{$ORG{'adanaid'}}[$a] <=> @{$ORG{'adanaid'}}[$b] } @{$ORG{'adanaid'}) {
@{$ORG{'adanaid'}) いっこ括弧閉じが足り無くない?
0476nobodyさん03/05/27 14:26ID:???
>>475
それでも動かない罠
0477_03/05/27 14:33ID:???
http://homepage.mac.com/hiroyuki43/jaz07.html
0478nobodyさん03/05/27 17:02ID:Ahi5sL61
スミマセン、質問です
Jcodeモジュールの使えないサーバーで
Unicode(UTF-8) -> Shift JISの変換を行いたいのですが
どうすればよいでしょうか?
0479nobodyさん03/05/27 17:18ID:???
>>478
CJKVConv.pl を使うとか
0480nobodyさん03/05/27 17:56ID:???
>>478
実はPerl5.8の鯖で、Encodeモジュールが入ってるとか。
048147803/05/27 18:36ID:???
>>479,480
レスありがとうございます!
CJKVConv.pl ググってみます。
ちなみに、Perlのバージョンは5.00503です
0482名前はまだ無い03/05/27 19:39ID:0dveLtbZ
初歩的な質問で恐縮なのですが、PERLのCGIで空ファイルを作るときは
open(a,">b");
close(a);
なんかで出来ましたよね。
空フォルダを作りたい場合はどのようにすれば良いのでしょうか?
上の">b"を">c/b"などにしても作ることが出来ませんでした。

どなたかお答えを願います。
0483nobodyさん03/05/27 19:42ID:???
mkdir
0484名前はまだ無い03/05/27 20:03ID:???
ありがとうございます
048546903/05/27 20:33ID:CEAVaVCK
>>472

2つのサーバで試したんですけど、syntax error at とかいってくれないですねー。
両方ともFreeBSDなんですけど、関係ないですよねー・・・
048647103/05/27 20:35ID:???
>>473-474 さんありがとうございます。
なるほどーーーです。
変数の一元目にソートするものを持ってくるわけですね。

アルゴリズム考えるのに、foreachのところばかりにとらわれてました。
もっと全体的視点からアルゴリズムを考えないとだめですね。

ありがとうございます。コード参考にさせていただきます。
0487動画直リン03/05/27 21:10ID:77ADrmTJ
http://homepage.mac.com/hitomi18/
0488nobodyさん03/05/27 22:20ID:???
>>485
ちょっと呆れた。

鯖で実験すんなよ。
他人の物で無限ループとかのひどいバグがあるかも知れないプログラムを走らせようとするな。
そういうのは、ローカルでしっかりチェックしてから鯖にあげるもんだ。

まずローカルにPerlをインストールすること。(WinならActivePerl)
スクリプトのバグがあるかどうかのチェックは、
1.MS-DOSプロンプトを開き、
2.スクリプトのあるディレクトリまで移動し、
3."perl スクリプト名"と入力する。

CGIを実行しようとすると、うまく行けばHTMLが吐き出されるはずだし、
バグがあればエラーメッセージが出て止まる。

自分の尻拭いは自分でできるようになろう。
0489nobodyさん03/05/27 23:22ID:???
16777215(\xFFFFFF)以上の文字を
$num = sprintf("%X", 116777215);
のようにして16進数に直そうとすると、全て\xFFFFFFになってしまいます。
どうしたらいいでしょうか?
0490nobodyさん03/05/28 00:45ID:d/eWTjVe
@array = qw( apple orange banana angle tv home ・・・・・・・ );

のようになっている配列に対して、anにマッチする要素の
インデックス番号(上の例なら 1, 2, 3 ・・・)を得たいのですが
ループを回さずに綺麗にできる方法はないでしょうか?
0491nobodyさん03/05/28 00:55ID:???
>>490

my $count;
my %temp = map { $_, $count ++ } @array;
@result = @temp{grep { /an/ } @array};

こんな感じかなー。インクリメントのあたりが怪しいけど。
0492nobodyさん03/05/28 01:07ID:???
>>491
難しく考え過ぎ。
@array = qw( apple orange banana angle tv home );
@result = grep $array[$_] =~ /an/, 0..$#array;
0493nobodyさん03/05/28 01:30ID:???
>>489
$number = 16777215(\xFFFFFF)以上の文字;
$num = sprintf(qq{%04X%04X},int($number/0x10000),$number%0x10000);
みたいな。
049449003/05/28 01:43ID:???
>>490-491
ひたすらgrepかmapを眺めていて、どちらかでできそうだと
思っていたのですが、全く思いつきませんでした。
まだまだ修行不足でした。ありがとうございました。
0495nobodyさん03/05/28 03:57ID:???
他のサーバーにあるファイルをhttpで読み込みたいんですけど、
それを解説してるページってあります? ぐぐっても見つかんなかった。


0496nobodyさん03/05/28 03:58ID:???
フォームから受け取った値から、下記の記号を取り除こうとすると、
if($name eq "ほげ"){
if($value =~ tr/;<>*|`/&$!#{}:;'"$//){
$error[n] = "エラーだぴょん";
$errorh = "1";
}
}

カタカナなんかもエラーの対象になってしまうのであります。
なんでなの?
0497nobodyさん03/05/28 04:03ID:???
>>496
エスケープ
0498nobodyさん03/05/28 04:17ID:???
>>496
なんじゃこりゃ・・・
0499nobodyさん03/05/28 04:26ID:???
日本語も混じってるテキストファイル(EUC-JP)からハッシュ値
だけ抜き出したいんですけどうまく抜き出せません。他にもゴミ
がついてきます。
#!/usr/bin/perl
while(<STDIN>){
if(/\b[a-z|0-9]{32}\b/){
print;
}
}

どうしたらいいですか?
0500nobodyさん03/05/28 04:32ID:???
>>496
あまりに問題外すぎます・・・。
もう少し勉強した方が・・・。

>>499
どんなファイルフォーマット?
0501nobodyさん03/05/28 04:48ID:???
フォーマットめちゃくちゃでも抜き出せるように
したいんですけど無理ですかね。。?もちろん、
空白か行頭、行末にはさまれてはいます。
0502nobodyさん03/05/28 04:54ID:???
>>501
たとえば、こんな状態で・・・って数行晒してくれない?
ハッシュ値って、どんな値なのかさっぱり。
0503nobodyさん03/05/28 05:32ID:???
>>502そうですよね。すみません

おらおらおらおら無駄無駄無駄無駄 by じょうたろう
vizelj f6c08af464e2db2d05988c121db29156

こんな感じです。ハッシュ値ってのは最後の英数字の
羅列です。アルファベットの小文字または数字で構成
されていて長さは32文字固定です。
0504nobodyさん03/05/28 06:55ID:???
>>493
目から鱗が落ちました。ありがとうございました。
0505nobodyさん03/05/28 07:58ID:???
パターンマッチした部分だけが必要なら $& とか $1 とか使う。

if(/\b([0-9a-z]{32})\b/){
print $1;
}
0506nobodyさん03/05/28 13:22ID:???
oepn(FA,">file");
close(FA);

のように、新規ファイルを作成すると
パーミッションが 0644 になってしまうので

 chmod(0777,"file");

のように0777に変えてやってるんですが、うまくいきません。(パーミッション変更出来ない)
サーバによっては上手く行くので、原因はサーバ側の設定でしょうか?
もしそうであれば管理者に相談しようと思うのですが、
それ以外で解決策ありますでしょうか?

やりたい事としては
・新規ファイル、ディレクトリを作成→パーミッションを777にしたい
です。
0507nobodyさん03/05/28 13:42ID:???
>>506
ファイルは忘れた(なんかあったと思う)
ディレクトリなら、
mkdir "dirname",777;
とかでいけたはず。
0508nobodyさん03/05/28 13:52ID:???
画像のアップローダーを作っててサイズ制限の機能をつけてるんですが、
現状標準入力から受け取って、ファイルとテキストを切り分けて、ファイルのサイズを取得して
サイズが大きいと蹴ってるのですが、

これだとサーバーに送信された後の処理なので、送信される前になんらか手を打てないしょうか?
0509nobodyさん03/05/28 13:55ID:???
ファイルを777にする必要ってないだろう。
鯖によっては777を禁止してるとこもあるかもしれないな。
755にも変更できないのか?
0510nobodyさん03/05/28 13:58ID:???
>>508
うろ覚えで悪いが、送信時にいけなかったっけか?
<input type=hidden name=MAX_FILE_SIZE value="500000">
たしかこんな感じで。
valueに最大ファイルサイズを入れればいいと思う。

ただ、うろ覚えなので確認は自分で。
051150803/05/28 14:02ID:???
>>510
なるほど、フォームでやれるわけですね、
ちょっと調べてみますサンクスコ
■ このスレッドは過去ログ倉庫に格納されています