Perlコーディング初心者質問スレ Part 53
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2006/11/26(日) 14:38:23ID:SlmGsFMB【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc8.2ch.net/test/read.cgi/php/1153987463/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0850836=846
2007/01/17(水) 12:49:39ID:???0851nobodyさん
2007/01/17(水) 12:52:13ID:???吊ってくるわ
0852nobodyさん
2007/01/18(木) 00:58:49ID:???0854nobodyさん
2007/01/18(木) 01:08:56ID:???どこにでもいるのでスルーするのがよろしい。ゴキブリホイホイより
0856nobodyさん
2007/01/18(木) 10:26:29ID:???でもテンプレすら読まないのは問題あるな
どっちにしてもスルーでおk
0857みろん
2007/01/18(木) 14:03:23ID:2GOHrU8+今、perlで掲示板を作っています。そこでリロードによる二重投稿を
防ぎたいのですが、私はlocationをつかってみようと思ってます。
しかし、うまくいきません。どこに記述すれば、送信後自分のページを
再読み込みしてくれるのでしょうか。
0858nobodyさん
2007/01/18(木) 14:27:04ID:???2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
0859nobodyさん
2007/01/18(木) 16:39:22ID:???ファイルをOpenし、ContentType等を設定して、
バイナリを出力させダウンロードさせる仕組みです。
しかし、ファイルが存在しなかったり、Openに失敗した場合の処理が、
ファイル名にエラー情報を書いてファイルサイズ0のものをダウンロード
させるくらいしか出来ていません。
ファイルのダウンロードに失敗しましたというダイアログを出すためには、
404 not foundを返せばいいのでしょうか?
0860nobodyさん
2007/01/18(木) 16:45:25ID:???0861nobodyさん
2007/01/18(木) 17:12:53ID:???0862nobodyさん
2007/01/18(木) 21:28:56ID:???location というのがヘッダーの Location フィールドのことなら、書き込んだ後に表示するページで
Location: ジャンプ先URL
をレスポンスヘッダーに追加して、適切なステータスコード(302、303など)を返します。
URLの最後に ? を付けると、ほとんどのブラウザで二重投稿を防止できるみたいです。
詳しいやり方は、使ってるライブラリによって異なるので、自分で調べてみてください。
location が JavaScript の window.location の事でも、基本的に同じですが、板違いです。
0863nobodyさん
2007/01/20(土) 14:34:54ID:67i3ErOc重複してしまいます。
@http_url = $text =~ /($set{'http_url_regex'})/g;
foreach my $url (@http_url) {
if (!grep(/^$url$/i, @link)) {
print "link : $url\n";
push(@link, $url);
}
}
なぜなのでしょうか?
0864nobodyさん
2007/01/20(土) 16:57:02ID:x00E/Fj7<input type="text" name="title" size="40"><br>
<input type="file" name="File" size="32"><br>
<input type="submit" name="send" value="送信"><br>
</form>
上のプログラムのように、テキストタイプのデータと画像などのデータを送信するプログラムを作りたいんですが
最初のフォームのテキストデータがちゃんと受け渡せません
multipart/form-dataで送信した際には、cgi側でどのような操作を行えばURLエンコードで送信した場合と同じようにテキストデータを扱えるんでしょうか?
0865nobodyさん
2007/01/20(土) 17:15:45ID:???何故っと云われてもわかんないけれどもおそらく恐ろしく効率が悪いみたいです♪
@http_url = $text =~ /($set{'http_url_regex'})/g; # $textからURIらしきものを取り出す。
# @link に追記。(ブロックにしておきますね)
{
my %link_hash = map +($_, 1), @link; # URIをキーにしたハシュを作る。
for my $collect_uri (@http_url){
defined $link_hash{$collect_uri} and next; # キーが存在すれば次。
push @link, $collect_uri; # キー(URI)が無かったので追記♪
}
}
これでどうかしら?
@linkにスタックされた順番を考えずに済むのなら他の方法もあるけれども♪
あと、@linkの要素総てに改行が含まれているなら刈り取っておかなきゃです。
0869nobodyさん
2007/01/21(日) 04:45:54ID:???Googleで"multipart/form-data perl"で検索してみるといいぞ。
検索結果をトップから10件分読めば大体分かる。
0870nobodyさん
2007/01/21(日) 09:24:25ID:prBhWU2Q検索して、何となくはわかったんですが、深く理解はできませんでした
けどstdio.plというライブラリを見つけました
stdio.plと一緒にダウンロードしたサンプルプログラムのgetMultipartFormDataを使えば何とかなりそうです
返信ありがとうございましたm(_ _)m
0872nobodyさん
2007/01/21(日) 12:54:47ID:???ID パス 入力で
個人ごとのデータを管理するオープンソースってありますか?
0873nobodyさん
2007/01/21(日) 14:19:50ID:???まあエスパーな俺が無理矢理読み取って答えると、いくらでもあるからよく探せ。
0874nobodyさん
2007/01/21(日) 14:21:10ID:???まあエスパーな俺が無理矢理読み取って答えると、いくらでもあるからよく探せ。
0875nobodyさん
2007/01/21(日) 14:29:45ID:???まあエスパーな俺が無理矢理読み取って答えると、いくらでもあるからよく探せ。
0876nobodyさん
2007/01/21(日) 14:35:48ID:???0877nobodyさん
2007/01/21(日) 16:27:20ID:???>874 魔美さんです。
>875 ユンゲラーです。
0878nobodyさん
2007/01/21(日) 17:55:44ID:???0879nobodyさん
2007/01/21(日) 18:22:18ID:???0880nobodyさん
2007/01/21(日) 19:41:27ID:???0881nobodyさん
2007/01/23(火) 10:33:18ID:gVOiAeShsub mail_okuru{
my($aitemail) = $_[0];
$_[2] = &adebo($_[2]);
$mail = "To: $aitemail\n";
$mail .="From: \日\本\語\名\前 <$mail_add>\n";
$mail .="Subject: $_[1]\n";
$mail .="Content-Transfer-Encoding: 7bit\n";
$mail .="Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n";
$mail .=$_[2];
&jcode::convert(*mail,'jis');
open(MAIL,"|$sendmail -i -t -f $aitemail");
print MAIL $mail;
close(MAIL);
}
------------------------------------------------------------
自動返信メールのアドレスの【日本語名前】のところがどうして文字化けしてしまいます
文字化けしないようにしたのですがどうすればよろしいでしょうか?
お願いします
0882nobodyさん
2007/01/23(火) 10:40:39ID:???0883nobodyさん
2007/01/23(火) 10:52:08ID:???base64でぐぐれよ
0884nobodyさん
2007/01/23(火) 12:00:56ID:???0885nobodyさん
2007/01/23(火) 17:43:26ID:???これは気づくまで放置か?
0886nobodyさん
2007/01/23(火) 20:24:43ID:???0887nobodyさん
2007/01/23(火) 22:16:41ID:???0888nobodyさん
2007/01/23(火) 22:57:35ID:???0889nobodyさん
2007/01/24(水) 01:37:38ID:???flockをローカルテスト鯖で使いたいのですが
Windowsで対応しているのはどのバージョンからでしょうか。
0890nobodyさん
2007/01/24(水) 02:39:08ID:???0891nobodyさん
2007/01/24(水) 04:30:09ID:???0893nobodyさん
2007/01/24(水) 06:44:06ID:???NT系で使えるってのは初耳だ
0894nobodyさん
2007/01/24(水) 07:03:26ID:???それ以外ならモードにあわせてLockFileEx/UnlockFileExを呼んでるな
0895nobodyさん
2007/01/24(水) 10:50:28ID:???print "Set-Cookie: test=test; domain=test.co.jp; expires=$expiredate;\n";
print "\n";
Set-Cookieでdomainを他のサーバーで指定するとcookieが発行されないのですが、
これは何が原因か教えて頂けますか。
domainの値を自サーバーもしくは、domain自体を記述しなければちゃんと発行されます。
0896nobodyさん
2007/01/24(水) 11:09:52ID:???クライアントはそういうのは拒否することになっている。詳しくは
RFC2965(HTTP State Management Mechanism)の3.3.2(Rejecting Cookies)参照
たぶんこれにひっかかったんじゃないか。
0897nobodyさん
2007/01/24(水) 12:18:29ID:???0898895
2007/01/24(水) 13:08:20ID:???そうしたらdomainを入力する項目ってほとんど必要性がないような…(´・ω・)
0899nobodyさん
2007/01/24(水) 13:16:44ID:???そこで有効範囲を指定してhoge.example.comのみに発行させることができる
0900nobodyさん
2007/01/24(水) 13:19:21ID:???example.comでクッキー発行すればauction.example.comでもshopping.example.comでも同じクッキーが使える
auction.example.com(ドメイン省略時の例として)で発行すればそこでしか使えない
0901nobodyさん
2007/01/24(水) 14:33:19ID:???http://〜/***.cgi?no=***
というようなページ(のソース)を読み込むことって出来ますか?
0902895
2007/01/24(水) 14:35:35ID:???0903895
2007/01/24(水) 14:39:06ID:???use LWP::UserAgent;
use HTTP::Request::Common qw(GET);
my $ua = LWP::UserAgent->new;
my $url = "http://〜/***.cgi?no=***";
my $request = GET($url);
my $res = $ua->request($request);
if ($res->is_success){
$content = $res->content;
}
といったような形で読めますよ(´・ω・)
0905nobodyさん
2007/01/24(水) 15:53:30ID:???data1.txtとして別名で保存したいのですが
どのようにすればいいでしょうか?
ちなみにperlは設置ができる程度です。
親切な方よろしくご指導ください。
Perl バージョン 5.008004 です。
0906nobodyさん
2007/01/24(水) 16:03:41ID:???0907nobodyさん
2007/01/24(水) 16:25:47ID:2EUwcZjVできるだけ短くてユニークなものが理想的だと思いますが
「普通はこれ使うだろ」といったような暗黙の標準区切り文字みたいなものはありますか?
それとも、コードの中で一時的にユニークな区切り文字に置き換えて処理し、
データに書き込むときは汎用性の高い区切り文字(カンマ等)で統一する、
といった方法の方が一般的なんでしょうか?
「自分はこうしている」という意見でも良いのでよろしくお願いします。
0908nobodyさん
2007/01/24(水) 16:28:30ID:???読み込みと保存はなんとなくこんな感じでしょうか。
変換がよくわかりません
open IN, "data.txt";
$data = <IN>;
close IN;
open OUT, ">data1.txt";
print OUT $data;
close OUT;
0909nobodyさん
2007/01/24(水) 16:32:21ID:???指定したURLが転送される場合303 See Otherが出て取得できない。
どうすれば転送後のサイトを取得できますか?
0910nobodyさん
2007/01/24(水) 16:50:31ID:???データの中に区切り文字を含まないように工夫すればなんでもいいんじゃね?
>>908
本を一冊読むことをおすすめする。
ここで全部を教えるのは難しい
>>909
"LWP リダイレクト"でぐぐった?
0913nobodyさん
2007/01/24(水) 20:41:48ID:???そこで半角のみの投稿は不可にしようと思ったのですが
正規表現だと
$char_check = $form{"message"};
if($char_check =~ /^[^0-9a-zA-Z]$/ ){
送信
} else {
エラー処理
}
こんな感じでやってみたのですがうまく動きません。
正しい動作をさせるにはどのように書き直せばいいでしょうか?
0914nobodyさん
2007/01/24(水) 21:25:03ID:???送信
}
0915nobodyさん
2007/01/25(木) 05:34:19ID:???あとURLに使われる文字とか。
0916nobodyさん
2007/01/25(木) 16:38:50ID:???UserAgentは簡単に偽装できるので、IPアドレスベースの識別をしたいのですが、
アクセス者のIPアドレスがサブネットマスク形式のアドレスで指定した条件に一致しているかどうかを
確認するモジュールはないでしょうか?
つまり、
my $ipType = &IP_Check('127.0.0.1', '127.0.0.0/24');
if ($ipType) {
print 'ループバックアドレスです。' . "\n";
}
みたいなことができる関数が欲しいです。
よろしくお願いします。
0918nobodyさん
2007/01/25(木) 18:26:22ID:???とりあえずCPANでsubnetで検索してみた?
その目的からするとTie::NetAddr::IPがこんな感じで使えてよさそうに見える。試してないが。
tie my $carriersSubnet, 'Tie::NetAddr::IP';
$carriersSubnet{"10.0.10.0/24"} = "CarrierA";
$carriersSubnet{"10.3.20.0/24"} = "CarrierA";
$carriersSubnet{"10.10.2.0/24"} = "CarrierB";
my $carrier = $carriersSubnet{$ipaddr};
0922nobodyさん
2007/01/26(金) 10:57:39ID:???質問させていただきます。
質問を提示してその下にラジオボタンで選択肢を作ります。
で、質問に答えたら次の質問と続いていくわけなんですが。
その選んだ答えを1.と答えたのがが3個 2.と答えたのが4個と最後に合計を出したいの
ですが、合計を出そうとするところができません。
そういう簡単なサンプルとかを提示していただきませんでしょうか?
0924nobodyさん
2007/01/26(金) 12:38:54ID:???if ($x eq $a){
$one++;
} eisif ($a eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、''2は' . "$two" . '、' . '3は' . "$three";
0925924
2007/01/26(金) 12:43:20ID:???if ($x eq $a){
$one++;
} eisif ($x eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、' . '2は' . "$two" . '、' . '3は' . "$three";
0926924
2007/01/26(金) 13:01:23ID:???if ($x eq $a){
$one++;
} elsif ($a eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、''2は' . "$two" . '、' . '3は' . "$three";
0927924
2007/01/26(金) 13:02:48ID:???0928924
2007/01/26(金) 13:08:50ID:???これが正解だ
if ($x eq $a){
$one++;
} elsif ($x eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、' . '2は' . "$two" . '、' . '3は' . "$three";
0929nobodyさん
2007/01/26(金) 13:20:33ID:???0930nobodyさん
2007/01/26(金) 16:52:05ID:???0931nobodyさん
2007/01/26(金) 20:04:25ID:???あとprintf覚えようね。
0932nobodyさん
2007/01/26(金) 21:03:20ID:???それとも1つの質問が書かれた複数のページがあるのか、はっきりしない。
前者なら、全ての質問について、選択肢をキーとしたハッシュでも作って集計すればいい。
後者なら、hidden フィールドでも使って、前ページまでの集計結果を覚えておけばいい。
0933nobodyさん
2007/01/27(土) 10:46:19ID:F/NZnu0Bお薦めのBBS向けのフレームワークとかご存じでしたら教えてもらえませんか?
0934nobodyさん
2007/01/27(土) 11:18:07ID:???0935nobodyさん
2007/01/27(土) 11:29:54ID:???今度使ってみるかなぁ。
つっても、%ndぐらいしか使わなそうだけど。
0936nobodyさん
2007/01/27(土) 11:34:36ID:???0937nobodyさん
2007/01/27(土) 11:39:50ID:???0938nobodyさん
2007/01/27(土) 13:38:26ID:???なんて書くくらいなら
printf("1は%d、2は%d、3は%d", $one, $two, $three);
の方が見やすいと思う。もしクォートの対応間違えてSyntax Errorになったら
探すのめんどいから。あとは、
printf("1は%d、2は%d、3は%d", @total{qw(one two three)});
のように書けるとき便利。
0939nobodyさん
2007/01/27(土) 16:26:34ID:???いや俺の話だけど。
0940nobodyさん
2007/01/27(土) 16:31:24ID:???って書いた方が無難かもかも。。
0943nobodyさん
2007/01/28(日) 07:39:42ID:???>>940 の方が意図しない挙動が起こらないからいいだろ。
0100 をプリントしたい場合
perl -e 'printf "%d", 0100 '
perl -e 'printf "%d", "0100" '
perl -e 'printf "%s", "0100" '
perl -e 'printf "%s", 0100 '
perl -e 'print "0100"'
まあ、printf "%04d", "100" 使えって云うんだろうけど。
0944nobodyさん
2007/01/28(日) 08:28:12ID:???だから>>940でOK。
0945nobodyさん
2007/01/28(日) 23:19:16ID:???ファイルを保存する方法がわかりません。
どうすればいいんでしょうか?
0946nobodyさん
2007/01/28(日) 23:26:29ID:???0947nobodyさん
2007/01/28(日) 23:35:50ID:???0948nobodyさん
2007/01/29(月) 01:45:42ID:???0949nobodyさん
2007/01/29(月) 17:40:11ID:???if($pObj->ping($host, $timeout)){
print "$host is running.\n";
} else {
print "$host is not running.\n";
}
PINGが4回送信成功したらall complete
四回とも失敗したときにnot reaction
としたいのですがどこに制御文足せば良いのか教えてください。
0950nobodyさん
2007/01/29(月) 18:37:35ID:???レス数が950を超えています。1000を超えると書き込みができなくなります。