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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/10/17(月) 00:47:17ID:???
Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
0320nobodyさん2005/10/31(月) 01:40:06ID:???
>>319
use strictは一言で言えば安全にプログラミングするためのプラグマだが…
とりあえず、一番のご利益は宣言の強制かな
my宣言をせずにいきなり変数を使おうとすると
エラーにするなどの機能を有効にする。というようなのがuse strict 'vars';
my $hoge = 'hogehoge';
print $hage; # use strict;すれば$hageは宣言されて無いのでエラー
見たいなミスを予防したりできる。

Kentは・・・まあ見本にはお勧めしないとだけ言っておこうか
0321nobodyさん2005/10/31(月) 02:43:49ID:???
KENTは悪い見本。最悪レベル。
いい見本は、コアモジュールのコードを読めばいいと思う。あと高いけど駱駝本
0322nobodyさん2005/10/31(月) 02:55:53ID:???
駱駝本は長い目で見れば高くはないさ。
0323nobodyさん2005/10/31(月) 03:03:40ID:???
>>321
良いにくいことをはっきり言うね…まあ同感なわけだけど
0324名無し募集中。。。2005/10/31(月) 03:15:06ID:s3JdPwyc
ラクダ本見辛いって思うのは私だけ?
03253012005/10/31(月) 03:24:24ID:???
>>302
ありがとうございます。
VBで言うところの、Option Explicit みたいな役割ってことでしょうか。

またまた質問なんですが、グローバル変数の宣言は、
$hensu;
だけでOKなんですか?
my とか local に相当する言葉はナシで良いのでしょうか。
(my と localについての解説しか見当たらないので)
検索していて our というのも見つかりましたが…
0326nobodyさん2005/10/31(月) 03:42:25ID:???
>>324
見るんじゃない、感じるんだ。

>>325
文法を 1 から 10 まで習うつもりか?
入門書か、perlsyn と strict.pm の perldoc ぐらい読んでから来いよ。
03273212005/10/31(月) 10:23:36ID:???
>>323
ま、ああいう言いにくいことは、自分のblogで書けないからね
ここでなら言っちゃってもいいかなーって思ってぶっちゃけたw
0328nobodyさん2005/10/31(月) 14:02:09ID:???
かと言って初心者がC-Board見ても仕方無いだろうなあ
0329nobodyさん2005/10/31(月) 16:26:16ID:mS98tkDz
文字列中の、<div id="aaa">から、それに対応する</div>までを消すにはどのように表せばいいんでしょうか?
<div id="aaa">から</div>までの間には、<div id="bbb">〜</div>とか<div id="cc">〜</div>とかがいっぱい入ってるんですが。。。
0330nobodyさん2005/10/31(月) 17:16:04ID:???
divの数を数えればいいじゃん。
開きが見つかれば+1
閉じが見つかれば-1
0の時点で閉じがあれば、そこで終了。
0331ヽ(´ー`)ノ ◆.ogCuANUcE 2005/10/31(月) 17:17:06ID:???
use strict;
use warnings;

use HTML::TreeBuilder;


my $doc = HTML::TreeBuilder->new_from_file('test.html');

map { $_->delete() } $doc->look_down('_tag' => 'div', 'id' => 'aaa');

print $doc->as_HTML();

こんでいいかね。
0332nobodyさん2005/10/31(月) 17:34:43ID:???
>>331
<q cite="http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlstyle.html">
戻り値をただ単に捨ててしまうような void 文脈で、grep() や map()、
`backticks` (訳注: `ls`のようにバッククォートで括った実行文のこと) を
使うことは避けましょう。そういった関数はすべて戻り値を持っているの
ですから、それを使うべきです。戻り値に用がないのであれば、代わりに
foreach() を使ったループか system() 関数を使いましょう。
</q>
0333ヽ(´ー`)ノ ◆.ogCuANUcE 2005/10/31(月) 18:42:21ID:???
>>332
あぁ、そうね。スマンカッタ。

$_->delete() for $doc->look_down('_tag' => 'div', 'id' => 'aaa');
0334nobodyさん2005/10/31(月) 22:40:16ID:???
if($test == $sample){
print"OK!!\n";
}
$test =1, $sample =1,
の時変数が数字なのか文字列なのかそれとも両方混じっているのか分からない時の
演算子はどうしたら言いのでしょうか。
eqで事足りると思うのですが、文字列と数字は分けなくて演算子をつかわなくてはいけないそうなのです。

すごく初心者的な質問ですいません。
0335nobodyさん2005/10/31(月) 22:50:00ID:???
>>334
たぶん宿題かなんかなんだろうが、お前はperlの前に
まず日本語を勉強しろ。何が言いたいのかさっぱり
わからん。
0336nobodyさん2005/10/31(月) 22:56:00ID:???
>>334
使わなくてはいけない、ではなくて自分がその中身をどう扱いたいか。
数値として扱いたいなら==を使えば良いし、文字列として扱いたいならeqを使えば良い。
数値として扱うというのは、"1.0"と"001"みたいなのも同じ1とする。
文字列として扱うというのは、これらを別のものとして扱うということだ。
03373362005/10/31(月) 23:01:33ID:???
>>334 質問にちゃんと答えてなかったかな。補足。
数値として扱えない文字が入っているのに数値として扱おうとする場合、
それ以降は無視される(1q3 => 1)
数値が入っているか文字列が入っているかわからないときに比較したいということは、
1q3と1axが同じ、と判断されちゃまずいということだよな。なら文字列として扱えば良い
03383342005/10/31(月) 23:43:09ID:???
レスありがとうございます。
演算子で数字と文字列同じように使えるeqの方が便利だからと言う理由でeqを多く使っていたのですが、
計算するわけでもないので、無理して==を使う必要がなく、「いけないではなくどう扱いたいか」で
凄く納得がいきました。
解りやすく説明していただきありがとうございます。
0339nobodyさん2005/11/01(火) 00:15:10ID:???
>>334
$hoge = "abc";
$hoge++;

一応こんなのも学んでおくといいかも
03403342005/11/01(火) 01:06:49ID:???
いろいろもう一度最初から見なおして見ます。
基礎的過ぎて詳しく説明しているところがあまりなかったので。
ありがとうございました。
0341nobodyさん2005/11/02(水) 15:33:18ID:lpDOmIjl
2台のサーバーにCSVテキストデータとCGIを別々において
CGIからCSVを読み込むにはどのようにすればよいでしょうか?
お願いします。
0342nobodyさん2005/11/02(水) 16:22:11ID:???
2台のサーバを統合する。
Socketモジュール系を使う
ftp.plライブラリを使う
0343nobodyさん2005/11/02(水) 16:27:42ID:???
>>341
nfs, ssh, http, ftp あたりでデータのやりとりすればOK。
03443412005/11/02(水) 16:38:32ID:lpDOmIjl
>>342-343
返信ありがとうございます。
ftp.plライブラリはどのようにして使うんでしょうか?
また、テキストファイルを定期的に更新したいんですが
どのようにすればよいでしょうか?
お願いします。
0345nobodyさん2005/11/02(水) 16:41:06ID:???
>>344
定期的な更新はcronコマンド。
ftp.plの使い方はググルのが吉。
03463452005/11/02(水) 16:42:13ID:???
↑我ながら「グルル」は良くないとおもた。
「ぐぐる」か「ググる」方が的確かl。
0347nobodyさん2005/11/02(水) 16:45:10ID:???
さすがにグルルはだめでしょう
グルルは
0348nobodyさん2005/11/02(水) 17:19:18ID:???
>>344
も少し詳しく書かないと分からないよ。

> また、テキストファイルを定期的に更新したいんですが
> どのようにすればよいでしょうか?

環境は? win? unix?
また、CGIスクリプトから更新したいの? 他のプログラムから?
0349nobodyさん2005/11/03(木) 17:31:58ID:???
CGI.pmを使って,スクリプトの状態をファイルに書き出しています.

if($cgi -> param(save)){
open(OUT,"> ./test.dat") || die;
$cgi -> save(OUT);
close(OUT);
}

このように,テキストエリアとチェックボックスのフォームデータを保存して,
別のcgiファイルで,読み込みをしています.

#フォームデータの読み込み
$file = "./test.dat";
open(IN,$file) if (-f $file);
$cgi = new CGI(IN);
close(IN);

テキストエリアはきちんと保存値が表示されたのですが,
チェックボックスが全て未チェックの状態になってしまいます.

なにかチェックボックスでは処理が必要なのでしょうか?
0350nobodyさん2005/11/03(木) 17:50:23ID:???
>>349
<input type="checkbox" name="hoge" value="hage" checked>
0351nobodyさん2005/11/03(木) 17:51:21ID:???
>>349
チェックボックスをチェックOn状態にするにはchecked属性が必要というのは理解してる?HTMLの話。
CGI側はvalueを複数受け取るけどね。
0352nobodyさん2005/11/03(木) 17:54:36ID:???
分かんないかも知れないから書き換え

pirnt $保存値 eq '保存値'
  ? qq|<input type="checkbox" name="hoge" value="hage" checked>
  : qq|<input type="checkbox" name="hoge" value="hage">|
 ;|
0353nobodyさん2005/11/03(木) 17:56:14ID:???
>>352
事故レスorz

pirnt $保存値 eq '保存値'
  ? qq|<input type="checkbox" name="hoge" value="hage" checked>|
  : qq|<input type="checkbox" name="hoge" value="hage">|
 ;
0354nobodyさん2005/11/03(木) 18:50:59ID:???
ファイルのオープンエラーをdieで終わらすのか・・
0355nobodyさん2005/11/03(木) 21:48:20ID:???
チェックボックスのチェックをいれるには,checkedが必要だということは認識しています.
そうやって,デフォルト値を操作して,チェックを入れた状態で表示するのではなく,

$cgi = new CGI (IN);

こうやって,ファイルを渡してあげて,保存値を反映したいのです.
テキストエリアではこの方法が上手く使えたのですが,
チェックボックスでは保存値が反映されなかったのです.
どうにかして,チェックボックスに保存値を反映したいのですが,どうすれば良いのでしょうか?
という趣旨でした.混乱させてもうしわけありませんでした.
0356nobodyさん2005/11/03(木) 23:42:33ID:???
>>355
ドキュメントを熟読して問題を切り分けよう。
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod

1. フォームから送られてくるデータはプログラムに渡される時点で
コントロールの種別に関係なく name=value の形になっているので、
テキストエリアなら受け取れるがチェックボックスでは受け取れない
という事が起こるならそれはフォームの書き方かブラウザがおかしい。

2. save メソッドはドキュメントにあるように human readable な形で
書き出してくれるので、まず全てのデータが正常に受け取れ、且つ
書き出せているかを確認。更にファイルハンドルを渡して生成した
CGI オブジェクトが全ての保存値を読み込めているかを Vars メソッド
等で確認。ちなみに >>349 の読み込みコードはファイルの読込権限
が無いと open に失敗するのでエラーチェックになっていない。

3. 読み込んだデータは 1. と同じく名前と値のペアの集合でしかない
ので、保存値を反映したフォームを出力したいなら、それらを適切な
要素に当てはめ直す作業が必要。→ >>350-353
0357nobodyさん2005/11/04(金) 01:23:13ID:???
詳細なアドバイスありがとうございます.
順を追って確認してみます.
特にVarsの使い方を教えていただき感謝いたします.
0358nobodyさん2005/11/04(金) 10:40:02ID:???
解決しました!
保存値はちゃんと渡せていましたが,チェックボックスの生成方法がオブジェクトを介さずに
CGI::checkbox と行っていたためでした.

みなさんほんとうに有り難うございました.
0359nobodyさん2005/11/04(金) 18:07:49ID:???
use utf8で文字列内やヒアドキュメント内で変数展開をすると
変数の後ろの文字列も含めて変数と解釈されてしまいます。

"${str}文字列"
"$str\文字列"
$str . "文字列"

などのようにエスケープなり逐一処理するしかないのでしょうか?
0360nobodyさん2005/11/04(金) 18:56:28ID:???
>>359
そりゃそうだ。

個人的にはソースに直接マルチバイトな文字リテラルを入れるのがそもそも
イカンと思うがね。
0361nobodyさん2005/11/04(金) 22:23:15ID:???
勉強厨房でサーバー駆動に挑戦してますが
CPAN のエラーが出てモジュールを入れられなくてコマってます。

--01:20:02-- ftp://ftp.perl.org/pub/CPAN/authors/id/M/MS/MSCHWERN/CHECKSUMS.gz
(試行:18) => `-'
ftp.perl.org[163.143.1.21]:21 に接続しています... 接続しました。
anonymous としてログインしています...
サーバの応答にエラーがあるので、接続を終了します。
再試行しています。

こんなのがでて、ずっと先へ勧めません。
いった移動してよいやらこまってます。
FTPへ手動での接続はできているんですけど・・・
  Convert::UUlib
  Convert::TNEF
あたりも、みんな ftp/perl.org への接続で失敗してるようです。
どなたかお知恵を拝借できればと思います。
よろしくおねがいします。
0362nobodyさん2005/11/04(金) 22:45:51ID:???
>>361
http://www.ss.iij4u.or.jp/~somali/web/_ppm.html
0363nobodyさん2005/11/05(土) 03:57:34ID:???
すいません、質問です。

文字列$commentがあって、
while($comment=~m//g){}を使って<tag>または</tag>を順々にマッチさせたいのです。

んでマッチしてから<tag>と</tag>のどちらがマッチ…

あ、わかった…$&で判定できるんですね…
鬱だ死のう
0364nobodyさん2005/11/05(土) 04:13:08ID:???
(゚д゚)ポカーン
0365nobodyさん2005/11/05(土) 04:14:32ID:???
$&使うもよし、()でキャプチャして$1で読むもよし
foreach( $comment =~ /<.*?>/g ){ print "tag = $_\n"; }
みたいに先にリストに展開するもよし
0366nobodyさん2005/11/05(土) 23:49:03ID:???
たびたびの質問をお許し下さい.CGI.pmを使ってCGIを作成しています.

#保存ボタンが押されたらデータをファイルに保存する
if(($cgi -> param(add)) && ($cgi -> param(yomi)) && ($cgi -> param(kanji))){
open(OUT,">> $file") or die;
$kanji = $cgi -> param(kanji);
$yomi = $cgi -> param(yomi);
$data = "$kanji\t$yomi\n";
$cgi -> delete_all();
print OUT $data;
close(OUT);
}

param(add)には,submitボタンの値,yomiとkanjiにはテキストフィールドの値が入っています.
保存ボタンが押されるとちゃんと,ファイルにデータが追加されるのですが,
保存ボタンを押して,リロード(F5を押す)を行うと,データが繰り返し追加されてしまいます.
delete_all()して,Varsでもパラメータは消去されているのを確かめたのですが,
リロードすると,やはり値が繰り返し追加されてしまいます.
0367nobodyさん2005/11/05(土) 23:53:00ID:???
途中で送信してしまいました,申し訳ありません.

続き…

delete_allを行ったにもかかわらず,値が追加されるということは,どこかに値が保存されている
ということだと思いますが,それはどこにあるのでしょうか?

よろしくお願いします.
0368nobodyさん2005/11/05(土) 23:56:09ID:???
ブラウザが覚えてるからリロードするとそうなる
解決策はググルとたぶん見つかる
どっかで見た
0369nobodyさん2005/11/06(日) 04:41:46ID:???
うん、二重投稿をエラーにすればいい
0370nobodyさん2005/11/06(日) 14:09:39ID:???
コメントからタグだけを削除したいのですが

$comment =~ s/<.*?>//gs;

これだけでは何か穴がありますか?
0371nobodyさん2005/11/06(日) 15:24:52ID:???
>>370
モジュール使えば?
03723662005/11/06(日) 20:09:02ID:???
ブラウザの機能だったんですね.てっきり自分のコードにミスがあるかと思っていました.
以前のログを参照して,同じ投稿がないかチェックするようにして,二重投稿を防ぐようにして解決しました.

みなさんありがとうございました.
0373nobodyさん2005/11/07(月) 11:47:17ID:92Mo7mCM
DBI初心者なのですが、Perl+PostgreSQLでWebアプリを作っています。
DBI::Pg使用し、1度の接続で下記要件を満たすSQL文を教えて下さい。
SQLではなく、Perl+DBIのプログラミング方法で可能であれば、その方法を教えて下さい。

顧客テーブルと購入履歴テーブルがあります。
顧客一覧を出力する時に、顧客ごとに購入件数も表示したいです。

顧客一覧をwhile($hash= $sth->fetchrow_hashref){}で取得し、
whileの中でさらに、$hash->{hoge_no}から購入履歴をSELECTしたのですが、
うまくいきません。お願いします。
0374nobodyさん2005/11/07(月) 12:30:03ID:???
>>373
>>1

Perl::DBI
http://pc8.2ch.net/test/read.cgi/php/1015943725/
0375nobodyさん2005/11/07(月) 12:36:56ID:???
http://pc8.2ch.net/db/

それよりこっちでしょ。SQL文一つでできるし。
0376nobodyさん2005/11/07(月) 13:21:51ID:???
SQLでコケてるのか、ハッシュを見る段階でコケてるのか、切り分けができてない。
Data::Dumperモジュールなどを使ってハッシュ内容をダンプしてみれ。
0377nobodyさん2005/11/07(月) 21:52:51ID:ErqtfEJb
1:
画像の「横幅」を判別して設定値以上なら縮小
設定値以下ならそのまま表示というのをしたいです。

2:
if文で何とかなると思い、扱えるように勉強しましたが、
「画像の横幅を判別する」というのはどうやってやったらいいのか・・・。

ヒントだけでも構いません。宜しくおながいします。
0378nobodyさん2005/11/07(月) 21:57:05ID:???
>>377
>>1
0379nobodyさん2005/11/07(月) 21:59:49ID:ErqtfEJb
>>378
即レスどうも
と言うことはできるんですね。
勉強してきます。
0380nobodyさん2005/11/07(月) 22:07:40ID:???
ImageMagic ってすごいよね?
0381nobodyさん2005/11/07(月) 22:16:16ID:???
鯖負担すごいね
0382nobodyさん2005/11/07(月) 22:22:21ID:???
GIFは先頭から7,8バイト目が横幅。BMPなら19〜22バイト目。PNGなら17〜20バイト目。JPGはちょいと面倒だから割愛。
横幅取得くらいなら自前コーディングで十分。
0383nobodyさん2005/11/07(月) 23:54:29ID:???
GDに比べてGIFが遅すぎ
0384nobodyさん2005/11/08(火) 01:03:07ID:???
>>383
GIF てw
0385nobodyさん2005/11/08(火) 02:46:44ID:???
>>377
サイズだけ取得するのならImage::Sizeでも。
0386nobodyさん2005/11/08(火) 07:56:18ID:???
>>384
DoCoMo用にGIFで吐かなきゃならんのだ。
0387nobodyさん2005/11/09(水) 07:29:42ID:???
質問です。
すごい久し振りにCGIをうPしたら、まったく忘れていたらしくエラーが出てしまいます。
しょうがないので、初心に返ってhello perlを出力しようとしたら、これもエラーです。
むかついたので、別に契約してあるプロバイダにCGIチェッカがついてるので
うPして何がおかしいか調べたら、

ファイルの先頭が

#!/bin/perl
#!/usr/bin/perl
#!/usr/local/bin/perl
でないか、CGI プログラムが ASCII モードで転送されていません

だそうです。????

ちなみにソースは
#!/usr/bin/perl
# HTML表示
print "Content-Type: text/html\n\n";
print "<HTML><HEAD>\n";
print "<BODY>\n";
print "Hello Perl World!\n";
print "</BODY>\n";
print "</HTML>\n";

ASCII モードになってないんですかね?
秀丸でファイル名:hoge.cgi ファイルの種類:その他 文字コード:自動選択
で保存したものです。何年ぶりかなので何か忘れてるのかもしれません。
ど素人で済みませんがお願いします。
03883872005/11/09(水) 07:30:43ID:VFhSh5VA
ああ、sageてました。ageときます。
0389nobodyさん2005/11/09(水) 07:47:21ID:???
>>387
文字コードを euc にしてみ。
03903872005/11/09(水) 08:05:29ID:5otQfz0T
EUCで改行LFでもCR+LFでもダメでした。
03913872005/11/09(水) 08:16:09ID:5otQfz0T
とおもったら、>>389で元のロリポではできました。
wakwakの解析が逝かれてるのですかね?
0392nobodyさん2005/11/09(水) 08:53:46ID:???
ひとのせいにする前に勉強しろ
0393nobodyさん2005/11/09(水) 09:06:00ID:BFWlWPsi
@imglist=grep *.jpg, readdir DIR;
がエラーです。
多分正規表現の指定がおかしいと思います。
0394nobodyさん2005/11/09(水) 09:29:22ID:???
>>393
正規表現なら
@imglist = grep /\.jpg$/, readdir DIR;

ワイルドカード使おうとしてるところを見るとこのへんと混同してるのかも
@imglist = glob("*.jpg");
@imglist = <*.jpg>;
0395nobodyさん2005/11/09(水) 11:29:02ID:???
>>387
ちゃんとASCIIモードで転送しているのか?
ファイルの先頭に変なバイナリが付いていないかバイナリエディタ等で確認したのか?(UTF-8保存とかね)
0396nobodyさん2005/11/09(水) 11:51:52ID:???
>>387
> ファイルの先頭が
> #!/bin/perl
> #!/usr/bin/perl
> #!/usr/local/bin/perl
> でないか、

このメッセージは、列挙された3つの行のうち好きなものを書けば
いい、という意味ではなく、サーバに対して指定された、何れか一つの行を
書かなきゃだめ、ということだと思うが。
#!/usr/bin/perl
は本当に正しいのかな?
0397nobodyさん2005/11/09(水) 18:03:19ID:???
ちゃんと確認しようよ。
ttp://www.wakwak.com/info/connection-setup/ftp/custom-cgi.html
0398nobodyさん2005/11/09(水) 18:24:22ID:???
>>387
ASCIIモードかどうかは、文字コードとかの問題じゃなくて
FTP転送の問題ジャマイカ?

ていうかここまで来るともはやスレ違い。
0399nobodyさん2005/11/09(水) 22:36:27ID:???
どうでもいいのだけど >>387 に一言言いたい。
ヒアドキュメント使え。
0400nobodyさん2005/11/10(木) 00:00:36ID:???
niku.2ch.netみたいなDNSBLに登録されているか調べるモジュールは何ですか?
PHPでNet_DNSBLを使っていて、PerlでもDNSBLチェックをしたいです。
0401nobodyさん2005/11/10(木) 01:43:05ID:???
調べてみた。
こんなんとか。

http://search.cpan.org/~tjmather/Net-DNSBLLookup-0.03/lib/Net/DNSBLLookup.pm
0402nobodyさん2005/11/10(木) 03:41:03ID:???
ありがとうございます!
入れました
04033872005/11/10(木) 06:37:47ID:XPue5Djf
おお、まんまり反応ないし>>392もあるんであきらめてたけど
色々ありがとう。

とりあえず
>>389で、ロリポは動きました。
で、>>395御指摘のutf-8でwakwakも逝けました。
解決できました。

>>396
>サーバに対して指定された、何れか一つの行を
>書かなきゃだめ、ということだと思うが。
そうみたいですね。
#!/usr/bin/perlはダメで、#!/usr/local/bin/perlはいけました。
>>397のリンクで
>スクリプト先頭行には #!/usr/local/bin/perl と記述して下さい。
と書いてありました。
でもあの書き方ではわかんないですよ。僕だけですかね・・・
>FTP転送の問題
でなくてよかったです。

とにかく、supecial thnxです。
0404nobodyさん2005/11/10(木) 06:43:00ID:???
>>403
>でもあの書き方ではわかんないですよ。僕だけですかね・・・

おまいだけ。あと「supecial thnx」は恥ずかしいからやめておけ。
0405nobodyさん2005/11/10(木) 09:39:09ID:???
>>403
真性ですね。
0406nobodyさん2005/11/10(木) 10:11:45ID:???
釣られるなよ
0407nobodyさん2005/11/10(木) 10:52:53ID:CqV/pVhD
perlの開発ソフトってないですか?
ビルダーとかみたいな
0408nobodyさん2005/11/10(木) 11:38:03ID:???
>>407
Perl書くのにどんなエディタ使ってる?
http://pc8.2ch.net/test/read.cgi/php/1014357485/
0409nobodyさん2005/11/10(木) 22:41:58ID:???
質問です。
現在フォームメールを作っているのですが、どうもうまくいきません。
スクリプトの流れとしては、

(サブルーチンA)フォームデータの取り込み、デコード、データをハッシュ(%FORM)に代入。
           ハッシュのデータをソートしてメールボディー用の変数($body。もちろんグローバル変数)へ代入。

(メインルーチン)送信ボタンが押されたかチェック。
           押されたら送信用のサブルーチンへ。

(サブルーチンB)確認ページの表示。ハッシュのデータをソートして表示。

なのですが、確認ページで送信ボタン(キー名はsubmit)を押すとハッシュの中身はsubmitだけになってしまうし、$bodyはどこかへ消えてしまうし、どうにもさっぱりです。
どなたか導いてください。宜しくお願いします。
0410nobodyさん2005/11/10(木) 22:44:24ID:???
とりあえずソースを全部、どこかのアップローダに上げろ
0411nobodyさん2005/11/10(木) 23:19:21ID:???
>>409
送信ボタンが押されたかのチェックなんてPerlの範疇じゃないと思うが
0412nobodyさん2005/11/10(木) 23:53:03ID:???
cgi.pm使ってdumpしてみりゃ
0413nobodyさん2005/11/11(金) 00:15:11ID:???
そもそもやりたいことがよくわからんのだが。
サブルーチンとか言ってるけど、ページの遷移はないってこと?
0414nobodyさん2005/11/11(金) 04:45:03ID:???
>>409-413
>>61
0415nobodyさん2005/11/11(金) 08:59:41ID:???
フリーのできるだけシンプルなフォームメール見て勉強するといいよ
0416nobodyさん2005/11/11(金) 18:22:32ID:???
質問です。

Perlでテキストファイルから1行ずつ読み込んで処理する時には
while(<>){}
で済みますが、
既に変数に入っているテキストを1行ずつ処理する場合、どうしたらよいのでしょうか?
0417nobodyさん2005/11/11(金) 19:03:57ID:???
改行をsplitでもすればぁ
0418nobodyさん2005/11/11(金) 19:15:49ID:???
Perl の標準で一行ずつ巡回する方法 (メソッド) って無いんだっけ?

テキストの内容がでかいとでかい配列ができちゃうのがイヤだけど、

foreach my $line (split(/^/, $txt)) {
# $line に何かする
}
0419nobodyさん2005/11/11(金) 19:18:47ID:???
>>417,418
レスありがとうございます。

>>418
すいません。splitの/^/というのは??
この場合の^は行頭を表す^ですか?
■ このスレッドは過去ログ倉庫に格納されています