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

Perlコーディング初心者質問スレ Part 59

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2009/02/16(月) 11:42:29ID:gvPTpodw
Perlのコーディングで困ってる人のスレです。

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

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

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

お勧めサイトは >2 以降

前スレ http://pc11.2ch.net/test/read.cgi/php/1218030872/
0819nobodyさん2009/07/11(土) 16:34:37ID:???
use strict;
use warnings;

sub any_func {
my @a = (1, 2, 3);
my $s = 6;
return wantarray ? @a : $s;
}

print any_func();

wantarryをwantarrayに直しただけで、ちゃんと123が表示されるよ?
0820nobodyさん2009/07/11(土) 19:10:03ID:????PLT(54324)
print +(any_func());
0821nobodyさん2009/07/11(土) 19:46:53ID:???
>>819
すみません。勘違いでした。printのなかで使用した場合arrayがかえってきました。
>>820
こんな指定の仕方もあるんですね。知らなかった。。
0822nobodyさん2009/07/11(土) 22:23:13ID:???
マジレスすると、
リストを返す関数からリストを得る為には、関数を「リストコンテキストで評価してやる」だけでよろしいです。
wantarray() の名の通り、array を want してやるだけ(ここは Perl 用語としては array でなく list と呼ぶべきだけれど)。

リストコンテキストの例としては、リスト代入(配列、ハッシュ、あるいはスカラー変数のリストに対する代入)、リストを取る関数の引数部などがそれにあたります。

print() は引数にリストを取る関数なので print の引数はリストコンテキストで評価されます。ですからこの場合、特別な仕掛けは要りません。

Perl の組込関数は、単項演算子として振舞ういくつかを除き、ほとんどが引数をフラットなリストとして扱います。
そのため scalar() はあっても、対となるはずの list() 組込関数は存在しません。(和ラクダ第3版v2 P.925 参照)
# ちなみに scalar() 自身は単項演算子として振舞う関数のひとつです。
0823nobodyさん2009/07/16(木) 14:08:29ID:XeS/olXC
すみません、質問です。

サーバーはXREAを使っています。
MIME::Parser を使おうと思い、他の箇所は問題無いCGIファイル内に
use MIME::Parser;
という記述を入れると
Argument "2.00_01" isn't numeric in subroutine entry at /usr/local/lib/perl5/site_perl/5.8.8/MIME/Head.pm line 119.
Argument "2.00_01" isn't numeric in subroutine entry at /usr/local/lib/perl5/site_perl/5.8.8/MIME/Head.pm line 120.
Argument "2.00_01" isn't numeric in subroutine entry at /usr/local/lib/perl5/site_perl/5.8.8/MIME/Head.pm line 143.
Argument "2.00_01" isn't numeric in subroutine entry at /usr/local/lib/perl5/site_perl/5.8.8/MIME/Entity.pm line 230.
Argument "2.00_01" isn't numeric in subroutine entry at /usr/local/lib/perl5/site_perl/5.8.8/MIME/Entity.pm line 231.
というエラーが発生してしまいます。

これの回避方法をご教示ください。
よろしくお願いします。
0824nobodyさん2009/07/16(木) 15:54:53ID:???
>>823
該当ファイルの該当行の前後がどうなってるのか分からないとね。
0825nobodyさん2009/07/16(木) 16:17:48ID:???
>>823
s/_01//
0826nobodyさん2009/07/21(火) 03:06:34ID:uwULaVde
誘導により、プログラム板より移動していきました。

CGIを作っているのですが、<input type="file" name="file">の扱いがよくわかりません。
ファイルが入力されているかいないかの判別を、definedで判別できるかと思ったのですが、
$cgi = new CGI;
if( defined( $cgi->param( "cgi"))) {}
これだと、いつもifの中にはいってしまいます。
わたしが謝ったコードを書いているのでしょうか?
今は、
if( 4 < length( $cgi->param( "cgi")))
で処理していますが、通常はどのような条件分岐を行うのでしょうか?
(上記の条件分岐は、ファイルをzipファイルをアップロード対象としているため、拡張子の分のファイル名を4文字と考えています。
0827nobodyさん2009/07/21(火) 03:46:34ID:???
大体のブラウザではファイルが選択されていない場合、空文字が入りますのでdefinedでは常に真になります。
ベターなチェック方法は
if( defined( $cgi->upload( "cgi"))) {}
です。
この方法ならファイル選択をせずテキストボックスに適当な文字を入力されたケースにも対応できます(偽が返る)。
0828nobodyさん2009/07/21(火) 04:02:29ID:???
>>827
それだと2回も uplodad メソッドが呼ばれるからなんか無駄な気分

if( defined( my $file = $cgi->upload("cgi") ) ){
   print $file;
}

こんな感じのがよくね?
0829nobodyさん2009/07/22(水) 23:40:08ID:???
パスワード付きのzipファイルをPerlで解凍する方法を教えてください。
sample.zipのパスパードはtestです。ここまで書きました。

#!/usr/bin/perl

use strict;

my $zipfile = 'sample.zip';
my $pass = 'test';
0830nobodyさん2009/07/22(水) 23:52:11ID:???
>>829
my $unzip = "/usr/bin/unzip";
my $file = "$unzip -p -P $pass $zipfile |";
open my $fh, $file;
my @lines = <$fh>;
close $fh;

あとは@linesを書けばOK
0831nobodyさん2009/07/23(木) 00:27:53ID:???
それ、コマンド叩いてるだけじゃ...
0832nobodyさん2009/07/23(木) 01:02:41ID:???
自力でやる意味がどこにあるんだ
勉強の為だとしたら質問するんじゃない
0833nobodyさん2009/07/23(木) 08:23:53ID:???
コマンド叩くのが一番自然
0834nobodyさん2009/07/23(木) 10:26:53ID:???
Archive::Zip はencryptに対応してないってマニュアルに
明記されてるし、IO::Uncompress::Unzipははっきりとは
書いてないけどパスワード与えるインタフェースがなさげ
なのでこちらも多分対応してない。
0835nobodyさん2009/07/24(金) 22:10:31ID:???
> IO::Uncompress::Unzipははっきりとは
> 書いてないけどパスワード与えるインタフェースがなさげ
> なのでこちらも多分対応してない。

return $self->HeaderError("Encrypted content not supported")
if $gpFlag & (ZIP_GP_FLAG_ENCRYPTED_MASK|ZIP_GP_FLAG_STRONG_ENCRYPTED_MASK);

そうみたいだね。
0836nobodyさん2009/07/27(月) 11:10:44ID:???
my @bar = (scalar(@{$foo}) > $N) ? @{$foo}[0..($N-1)] : @{$foo};

というコードがあるんですが、何をやっているのかわからないので教えてください。
・@{$foo} は何ですか?$fooでも@fooでもないのでわかりません。
・scalar(@{$foo}) は結局何をしているんでしょうか?
0837nobodyさん2009/07/27(月) 11:30:52ID:???
> ・@{$foo} は何ですか?$fooでも@fooでもないのでわかりません。

$fooというリファレンスを、デリファレンスしてる

> ・scalar(@{$foo}) は結局何をしているんでしょうか?

配列の要素数を得てる
スカラーコンテキスト。

my $count = @array;
ってやると、コンテキストで要素数が得られるのと同じ。
0838nobodyさん2009/07/27(月) 11:42:52ID:???
ふと心配になったので、念のため

@{$foo}
と書くのも
@$foo
と書くのも一緒だから、覚えとくといいよ。むしろ後者で書く人の方が多い気がするから。
0839nobodyさん2009/07/27(月) 11:46:28ID:???
>>837-838
ありがとうございます。@{$foo}と@$fooは同じなんですね。
@{$foo}なんて書き方、初めてみたんですが、これどんなときにつかうんですか。@$fooだけでいいように思いました。
0840nobodyさん2009/07/27(月) 12:21:05ID:???
>>839
Perlはいろんな書き方出来る言語だから、そんなことでいちいち疑問に思ってたら前に進まないよ

というより、@{$foo}の方が丁寧な書き方っていう印象がある。
俺がそう思うということは、たぶん、オライリーのプログラミングPerlや初めてのPerlにはそう書いてあるはず。
0841nobodyさん2009/07/27(月) 12:35:35ID:???
>>839
あくまで @{...} が基本形。{} の中はリストリファレンスを返すものなら何でもいい。

@{ ['A'..'Z'] }
@{ $flag ? $bar : baz() }
@{ $foo[1] }
${ $quux }[1]
@{ $quux }[ 1..3 ]
@{"symbolic"} # 文字列ならシンボリックリファレンス
@{bareword} # トークンなら普通の変数

{} の中が単純なスカラー変数の場合は{}を*省略*できる (そして省略する人が多い)。

…と覚えた方が、後で悩まずに済むよ。
0842nobodyさん2009/07/27(月) 12:39:54ID:???
${foo}
0843nobodyさん2009/08/07(金) 10:07:16ID:???
バイナリに関してです。

my $head = 0x00000000; #空の4バイト確保
print (pack( "V", $head) . "\n"); #挙動がおかしいのでちょっと出力してみた

しっかり消滅してるしw
どうしればいいですか。

0844nobodyさん2009/08/07(金) 10:27:48ID:???
>>843
よくわからんがhoge.plにそのまま書き込んで実行してみた。

% perl hoge.pl |hex
0x00000000: 00 00 00 00 0a - @@@@J

ちゃんと4バイトの0が出てるので書いてるとおりの動作だな。

これで不満ならどうやって確かめて何がおかしいと思ったのか説明
してもらわないと。
0845nobodyさん2009/08/07(金) 10:42:44ID:???
すみません。
俺が勝手に使ってるテキストエディタ内の新タブに出力させてたら、エディタの問題だったみたいです。

プロンプト、ファイル出力、共に4バイトありました。
0846nobodyさん2009/08/12(水) 14:33:18ID:???
この↓ようなモジュールないですかね?

use CGI::Sendmail;

my %mail = (
To => 'you@2ch.net',
Cc => 'he@2ch.net',
Bcc => 'she@2ch.net',
From => 'me@2ch.net',
Name => "ひろゆき",
Subject => "こんにちは",
Body => <<EOL,
お元気ですか?
では、さようなら
EOL
"Sendmail-path" => "/usr/sbin/sendmail",
"Character-code" => "euc-jp",
);

if ( CGI::Sendmail->new(%mail)->send ) { print "送信完了" }
else { print "送信できませんでした" }
0847nobodyさん2009/08/12(水) 16:40:16ID:???
>>846
http://search.cpan.org/dist/MailTools/
http://search.cpan.org/~markov/MailTools-2.04/lib/Mail/Send.pod
http://search.cpan.org/search?m=module&q=Mail&s=1&n=100
0848nobodyさん2009/08/12(水) 18:05:46ID:XtZqM+tg
超低レベルな質問なんですが
フォームで受け取った$pass(値はhoge)と
同じくフォームで受け取った$idをファイル名に含んだファイルの二行目をfile()で読み込んで
$data[1](値はhoge)に代入して
if($pass==$data[1]){
print"値は同じです".$pass"==".$data[1];
}
else{
print"値は違います".$pass"==".$data[1];
}
を実行すると
「値は違います hoge==hoge」
と表示されるのですが「値は同じです」と表示させるにはどうしたらいいですか?
0849nobodyさん2009/08/12(水) 18:10:12ID:???
eq
0850nobodyさん2009/08/12(水) 18:11:08ID:???
それか改行入ってるとかありがち
0851nobodyさん2009/08/12(水) 18:14:13ID:XtZqM+tg
PHPスレと間違えましたすみませんでした
0852nobodyさん2009/08/12(水) 18:16:02ID:???
>>847
d
文字コード変換とMIME-base64?変換を自分でやれば使えそうです。
0853nobodyさん2009/08/13(木) 20:16:07ID:CNJ7rD2p
Perl勉強したときは
printfと書きましょうと習ったんだけど

printでも普通に使えるよね?
昔は使えなかったの?
0854nobodyさん2009/08/13(木) 20:43:12ID:???
>>853
>printfと書きましょうと習ったんだけど
まずそれがおかしい
0855nobodyさん2009/08/13(木) 21:09:54ID:???
誰からどう習ったんだよw
0856nobodyさん2009/08/13(木) 22:41:36ID:???
printfのfの意味わかってんの?
0857nobodyさん2009/08/13(木) 22:44:43ID:???
こういう場合は という限定的な意味で教えたが、
習った>>853は、全ての場合でと勝手に解釈したってことだろ

会話で生じる誤解としては良くある例
0858nobodyさん2009/08/14(金) 01:16:04ID:???
printf が使えるなんて知らなかった
print と sprintf だけ使ってた

びっくらこいた
0859nobodyさん2009/08/14(金) 01:26:28ID:???
人のソースみるとびっくりすること多いよね
こんな書き方できたのか!?って
0860nobodyさん2009/08/14(金) 02:07:28ID:???
糞質問失礼します

html表示するときのフォントをverdanaにしてるんですが
そうすると半角¥がバックスラッシュで表示されてうざいので

$hoge=~ s/\\/¥/ig;

としようと考えたのですが、すると今度は特定の日本語文字が
化けてしまいます

$hogeの中の英数記号だけを変換するにはどう書いたらよいでしょうか
08618602009/08/14(金) 02:12:28ID:???
あっ

$hoge=~ s/\\/&yen/ig;

です
0862nobodyさん2009/08/14(金) 02:53:12ID:???
use utf8
0863nobodyさん2009/08/14(金) 13:14:16ID:???
>>859

$hash{$1} = $2 while $str =~ /(.+):(.+)/g;

とかな
0864nobodyさん2009/08/14(金) 14:02:57ID:dh+Y7m4l
>>860
バイトコードで書く
\5Cの次にS-JISの2バイト目が来なかった場合のみ置換
0865nobodyさん2009/08/15(土) 03:34:02ID:???
>>864
正規表現で書くことはできますか?
すみません初心者で
0866nobodyさん2009/08/15(土) 03:55:15ID:???
>>865
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
0867nobodyさん2009/08/15(土) 11:58:25ID:???
>>865
肯定の戻り読みを使って、単語の後と行の先頭のときのみを置換するようにしたらどうだろう?

$hoge =~ s/((?<=^)|(?<=[\x00-\x7F\xA1-\xDF])|(?<=[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]))\\/¥/g;
0868nobodyさん2009/08/15(土) 12:52:11ID:???
>>867
おおおおおおお成功しました。感謝です
?<=なんて初めて知りました

>>866
勉強します
0869nobodyさん2009/08/16(日) 14:53:02ID:???
それだと例えば「や・ら・わ行」の次に「能」の字とかが来ると化けるけどな
0870nobodyさん2009/08/16(日) 15:29:10ID:???
以下のようなコードで、

use Data::Dumper;
print @Data::Dumper::EXPORT; #=>Dumper

パスを文字列にしてアクセスする場合は、シンボリックリファレンスにするしかないですかね?

my $path = "Data::Dumper";
print @{$path."::EXPORT"}; #=>Dumper
0871nobodyさん2009/08/16(日) 21:22:55ID:???
use strict でエラーにならない?
0872nobodyさん2009/08/16(日) 23:58:30ID:???
>>870
print eval "\@${path}::EXPORT";
0873nobodyさん2009/08/17(月) 00:52:26ID:PDEfAFzM
linuxのperlモジュールについての質問はここで良いのでしょうか?
0874nobodyさん2009/08/17(月) 01:29:56ID:???
いいんじゃないのー
0875nobodyさん2009/08/17(月) 02:14:21ID:???
>>870

{package Data::Dumper;
print EXPORT}


とかは?
試してないけど
0876nobodyさん2009/08/17(月) 02:18:26ID:???
あー意味不明でした

{ package $path; print @EXPORT}

package で変数使えるならいけそうだけど使えなかった記憶が…
0877nobodyさん2009/08/17(月) 07:59:43ID:???
それ eval "package $path" ってしないとダメだよ。
前に一度そういうコード書いたことあるからわかる
0878nobodyさん2009/08/17(月) 09:09:05ID:QR35H0tn
あげ
0879nobodyさん2009/08/18(火) 00:44:13ID:jmGn/Iui
LWPモジュールのHTTP::Response::is_success() を使用するとエラーは出ないのですが
中身が空で返ってきます。URLは間違ってないのですが、考えられる原因は何かないでしょうか?
0880nobodyさん2009/08/18(火) 01:01:54ID:???
>>879
UserAgentがLWPだから
はじかれてるとか?
0881nobodyさん2009/08/18(火) 01:17:01ID:???
HTTP::Response::as_string
取りあえずこの中身見てみては?
0882nobodyさん2009/08/18(火) 02:57:59ID:B/cB/Ta1
本当にからなの?
0883nobodyさん2009/08/18(火) 05:23:06ID:???
>>879
お父さんが設定した、未成年向け有害情報フィルタでフィルタリングされた。
0884nobodyさん2009/08/18(火) 12:26:05ID:???
>>879
ありがちなのはUserAgentとかRefererとかCookieとかトークンで弾かれてるってパターンだな。
0885nobodyさん2009/08/18(火) 12:34:15ID:???
全部偽装してみりゃいい
08868792009/08/18(火) 13:44:36ID:9U61OqMG
>>881
これで良いのしょうか?
my $request = HTTP::Request->new('GET',$url);
my $http = $request -> as_string();
print "$http";
GET http://headlines.yahoo.co.jp/rss/indonews_c_int.xml User-Agent: libwww-perl/5.830

>>880
よく分からないのですがどういうことでしょうか
また、はじかれるのを回避するにはどうすれば良いのでしょうか?
0887nobodyさん2009/08/18(火) 14:25:27ID:???
>>886
http://headlines.yahoo.co.jp/rss/indonews_c_int.xmlが取得したいなら、
LWP附属のGETコマンドで一発で取れるからどっかスクリプトに不具合があるんじゃ
ないかと思われ。
0888nobodyさん2009/08/18(火) 16:40:28ID:???
use LWP::Simple;

my $url = "http://headlines.yahoo.co.jp/rss/indonews_c_int.xml";
my $file = "./rss.xml";
my $rc = getstore($url, $file);
is_success($rc) or die status_message($rc);

こっちはこれでアクセスできてるけど。
これがダメなら、一度LWPのパッケージのバージョン上げてみて、
それでもダメなら別の角度からどうぞ。

それ以前に、ブラウザでアクセスできてるんかいな。
08898792009/08/18(火) 18:56:58ID:2nsUhaJf
>>888
最後の行でサーバエラーが出ました…
またブラウザでアクセスは出来ます。

あとアップデートはrootでrpm -Uvh perl-libwww-perlを行って出来ませんでした。
間違いを指摘して貰えると助かります。
0890nobodyさん2009/08/18(火) 20:17:49ID:???
パッケージマネージャからではなくて、cpanを使ってバージョン上げるとどうなる?
依存関係でcpan使いたくないのなら、別に/usr/localにソースからPerl突っ込んでみるとか。

ここまで来るとlynxかwget使って取得した方が早そうだけど。
08918792009/08/18(火) 22:21:49ID:2nsUhaJf
>>890
cpanでinstall LWPとした所、LWP is up to date(5.830)となりました。
0892nobodyさん2009/08/19(水) 01:47:46ID:1hmn0Zu+
てす
0893nobodyさん2009/08/19(水) 09:37:51ID:???
>>889
rpmで削除できないか?できないなら@INCから自力でLPW探して
LPWを手動で削除してもっかいcpanから入れてみろ。
0894nobodyさん2009/08/19(水) 09:42:45ID:???
>>889
つーか、ブラウザではプロキシ経由とかそういうオチじゃないだろうな・・・。
0895nobodyさん2009/08/19(水) 18:15:22ID:???
プログラム板から誘導されてきました

perl+htmlで掲示板を作っています。PC・携帯共に基本的には正常動作するのですが、auの機種のみ

■html側(shift_jis)
<form action="bbs.cgi" method="post">
<textarea name="comment" rows=4 cols=30></textarea>
<input type=submit value=発言>
</form>

↓「あいうえお」と入力

■bbs.cgi(EUC_JP)
use CGI;
$query = CGI->new;
@params = $query->param();
foreach $param (@params) {
  $in{$param} = $query->param($param);
}



$in{comment}の中身は「??????????」

のような動作になってしまいます。
URLエンコード/デコードのせいかと思ったのですが、受け取り時点でこんな化け方をされるとどうすれば良いのやら……
何か解決法は無いでしょうか。
よろしくお願いいたします。
0896nobodyさん2009/08/19(水) 21:20:51ID:???
Encode Guess
0897nobodyさん2009/08/19(水) 22:50:25ID:???
EUC-JPの文字コードはShift_JISとどっかぶりだから、判定できないことがしばしばある。
携帯向けコンテンツはShift_JIS/UTF8のどっちかで作っとくことをお勧めしとく。
0898nobodyさん2009/08/19(水) 23:39:59ID:1hmn0Zu+
>>895
全部、UTF-8で作ったら?
0899nobodyさん2009/08/19(水) 23:48:54ID:???
>>895
$in{comment}の中身は、shift_jisコードで「あいうえお」なのだから、この中身をeucに変換する必要があるでしょ。
変換するとき自動にすると誤作動するから、my $str = Jcode->new($str, "sjis")->euc; などと元のコードを指定するべし。
あと、ページを出力するときにcontent-typeヘッダにcharsetを指定するべし。
0900nobodyさん2009/08/20(木) 00:51:47ID:???
DBIでcreate databaseとdrop databaseは出来ますか?
0901nobodyさん2009/08/20(木) 01:05:38ID:???
>>980
できるだろ
適切に設定してあれば

もし外部に操作させようってんなら愚行だと思うが
0902nobodyさん2009/08/20(木) 05:47:30ID:???
こちらでいいか分かりませんが、質問させてください

今PATH_INFOの汚染チェックでヌルバイト(%00等)があれば消去という処理を
したいんですが、なぜかマッチしてくれません
$PATH = shift;
$PATH =~ s/(\0|\x00|%00)//g;

POSTやGETでは上記の処理で消すことが出来たんですが
PATH_INFOの場合はやり方が違うのでしょうか?
ちなみにタグのサニタイジングは出来ました
0903nobodyさん2009/08/20(木) 08:42:44ID:???
>>902
サニタイズ脳乙。

つーかapacheだとNULLは受け付けてくれないんだが(Not Foundになる)。
PATH_INFOを16進ダンプとかしてみた?
0904nobodyさん2009/08/20(木) 09:14:03ID:???
>>903
あー
だからPCからだと404に飛んだんだ

test.cgi/test/%00/aaa/
でPATH_INFOを表示させた場合
PC→404エラー
携帯(au)→/test/
となりました

16進ダンプ…調べてきます
0905nobodyさん2009/08/20(木) 10:52:18ID:???
あとクライアントが蹴ってるのかサーバーが蹴ってるのか分かんないから、
見れるならサーバーのログもみとくといい。
クライアントが蹴って単にサーバーまで届いてない可能性もある。
09068952009/08/20(木) 11:42:27ID:???
>>896-899ご回答ありがとうございました、いくつか試してみました。

1.EUC-JPとShift_JISの判定問題が疑われるので、両方sjisに揃えてみる
 →揃えても$in{comment}の中身は「??????????」で変わらず。この判定問題ではない?
  Jcode変換しても全く変わらないので、そもそも「??????????」はshift_jisコードですらなさそう。

2.Encode Guessの使用
 →両方sjisに揃えたうえで実行してみましたが、「??????????」はasciiコードとのこと。(「??????????」そのものになっている?)

 UTF-8での作成も試してみようと思います。
 これで出来なかったら素直にPHPに行ってくる……
0907nobodyさん2009/08/20(木) 15:40:09ID:???
携帯電話なら、Shift_JISが今でも定番だったりするしな。
0908nobodyさん2009/08/20(木) 23:15:50ID:???
>>895
Encode関連と見た。SJISだと「あいうえお」は全部MSBが立ってるから、
UTF-8ではマップできない。で、?に置換される。
MSBの立ってないのが混じってる「01234」で試してみ?
「?」以外の文字が混ざるようならビンゴだ。
>>897
今のUAでcharset=を解釈しないものとかHTMLの文字コードと送られてくる
文字コードが食い違うものって残ってる?
>>899
Encode使えよ
0909nobodyさん2009/08/20(木) 23:57:41ID:???
>>908
auはページがUTF8でもフォーム内容はShift_JISで送られてくるんじゃなかったっけ?
0910nobodyさん2009/08/21(金) 00:09:36ID:???
てか、
> ■bbs.cgi(EUC_JP)
を見て反応して、
> ■html側(shift_jis)
を見逃してた。

なるほどEncode.pm絡みか。
0911nobodyさん2009/08/21(金) 00:15:52ID:???
これってEncodeの問題?

CGI.pmって
URLデコードが失敗すると?になったような

use CGI;
use URI::Escape;
print CGI::unescape( uri_escape( 'あいうえお' ) );

とかで試してダメならCGI.pmのバージョン上げてみるとか
0912Name_Not_Found2009/08/21(金) 00:52:35ID:nWh8czvG
Wep製作板から乗り移ってきました。以後よろしくお願いします。
肝心な質問ですが、

検索ボタンと一緒に付随しているコンボボックス?の事についてですが、何か1つコンボボックスの中の項目を選択して検索ボタンを押した後、その選択したコンボボックスを残した状態で検索結果を表示させたいです。
ただ検索ボタンとコンボボックスの領域は別のhtmlになっていて、検索結果を表示するCGI側で、その検索ボタンとコンボボックスがあるhtmlを読む込みようになっています。
前の検索項目を残すようにすることは可能でしょうか?

よろしくお願いします。
0913nobodyさん2009/08/21(金) 01:17:05ID:???
可能
0914nobodyさん2009/08/21(金) 03:36:54ID:kHQe2rHZ
てす
0915Name_Not_Found2009/08/21(金) 09:53:12ID:nWh8czvG
>>913-914
宜しければ、やり方を教えてください。
0916nobodyさん2009/08/21(金) 10:34:03ID:???
LWP 使った書き方が沢山ありすぎて迷う
LWP の使い方はここを見ておけば、大概は困ることないよ
っていうサイトはありますか?
0917nobodyさん2009/08/21(金) 10:43:59ID:???
質問です。
どこで聞いていいのかわからないので適切なスレがあれば誘導お願いいたします。

たとえば下記のようなディレクトリ環境をサーバに上げた場合、
a1以下全ての属性を777にしようとffftpのソフトでやると一つずつしか変更できないようでした。
そこでDOSプロンプトからftpで入り
quote site chmod 777 a1
としたところうまくいったので、下記のように再帰オプションをつけたところエラーになりました。
quote site chmod -R 777 a1
ヘルプをみると引数が2とあったので、ここでのchmodにはオプションが使えないのだと思います。

a1/
|---b1/
| |---text.txt
|---b2/
| |---c1
| |---text.txt
|---b3/

telnetなどがサポートされていないサーバなのですが、再帰処理ができるソフトやコマンドはありますでしょうか。
0918nobodyさん2009/08/21(金) 12:04:28ID:???
>>916
http://search.cpan.org/dist/libwww-perl/lwptut.pod
http://search.cpan.org/dist/libwww-perl/lwpcook.pod

>>917
△▲ WebProg 初心者の質問 Part19 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1244038749/
レス数が900を超えています。1000を超えると表示できなくなるよ。