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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2005/08/12(金) 01:26:47ID:mHnZWvqz
Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
0914nobodyさん2005/10/13(木) 00:37:18ID:???
>>912
ああ、失礼、それなら先読み否定アサーションを使うべし
(?<!\w)
0915nobodyさん2005/10/13(木) 00:40:44ID:???
>>820 のperlの勉強は終わったらしいが、まだ perl の p も始めてない気がするなあ。カワイソス。
0916nobodyさん2005/10/13(木) 00:42:22ID:???
CPU食わないで指定秒ストップさせることは出来ますか?
sleepだと5%ぐらい使ってしまってるみたいで・・・
09179142005/10/13(木) 00:43:52ID:???
後読み否定だったorzハズカシス
ついでだから>>912のようにやるならばという別解も書いとこう
(^|\W)
09189092005/10/13(木) 00:46:02ID:???
>>913-914
ご教示有難うございます。
ぐぐって調べてみましたが、どうやらこれは

(?<!...) ゼロ幅の否定後読み表明

みたいですね。
私には少し敷居が高そうなので、もう少し勉強してみます。
とにかく有難うございます。
09199092005/10/13(木) 00:52:49ID:???
>>917
すみません、行き違いになりました。
なるほど、と試してみましたが、なぜか引っかからなくなって
しまいました。

調べてみます。
09207662005/10/13(木) 00:53:02ID:???
>>777 766です。大変遅ればせながら
09219092005/10/13(木) 01:00:44ID:???
経過報告です。

× (^|\W)c=1
× (^)c=1
○ ^c=1

なんででしょうね。。
もう少し調べてみます。
09227662005/10/13(木) 01:07:08ID:???
↑Enterで書き込みになってた。。。スレ汚しすません

>>777
遅ればせながらレス有難うございます。
しかしながらいまだcsvへの書き込みが上手くいきません。。

やりたいのは、csv開いたときに

名前,Q1の回答,Q2の回答,Q3の回答。。。。
空欄,Q1の正解,Q2の正解,Q3の正解。。。。

と横並びにカンマ区切りで出したいのですがいろんなソースを入れてみても
上手くいきません。。泣
しかも名前を普通にFORM POSTからとりたいんだけど、どこにソース入れてもエラーになる。。

09237662005/10/13(木) 01:08:08ID:???
現在のソース要約はこんなのです。(.incのファイルはやめて普通にhtml→cgiにした。)

【question_1cgi】
# 質問の取得

&ReadParse;

if(open(IFILE,"question_1.tsv")) {
while(<IFILE>) {
chomp();
push(@question,$_);
}
close(IFILE);
}



09247662005/10/13(木) 01:09:22ID:???
# 回答の表示

my($qnum) = 0;
foreach (@question) {
($qval,$aval,@column) = split(/\t/);
next if($qval eq "");

$qnum++;
$key = "Q".$qnum;
$val = $in{$key};
if($val eq $aval) {
$check = "○";
} else {
$check = "×";
}

$anum = 0;
$answer[$anum] = " ";
foreach (@column) {
next if(!$_);
$anum++;
$answer[$anum] = $_;
}
09257662005/10/13(木) 01:09:56ID:???
# csv書き込み
open(WRITE_BBSDAT , ">> file.csv");
print WRITE_BBSDAT"ここがわかりません。。。";
print WRITE_BBSDAT"$val,$aval ←じゃ縦にならんじゃう。横にそれぞれ上下で表示したい。";
close(WRITE_BBSDAT);


どなたかお助けください。。お願い申し上げます。
0926nobodyさん2005/10/13(木) 01:12:17ID:???
何が × なんだ?

my $query = 'c=0&d=1';
とか
my $query = 'ac=1&c=0&dc=0';

c=0 だけにマッチさせたいんだよな?

if ($query =~ /(?:^|(?<=\W))c=0(?:(?=\W)|$)/) {
print 'ok?';
}
でない?
0927nobodyさん2005/10/13(木) 01:13:53ID:???
>>921
ありゃ、もしかしてPerlのバージョンが古いと動かなかったりするのかな
バージョンいくつか分かる?とりあえず5.6.1と5.8.7では動作したけど・・・
Perl4探してこよう・・・
09289262005/10/13(木) 01:14:07ID:???
>>921 ね
09299092005/10/13(木) 01:18:14ID:???
>>926
おっしゃるとおりの条件にマッチさせたいと思っております。
そしてご回答有難うございます。
ちょっと私にはもう少し理解する時間が必要になりそうですが、
一つ一つ勉強していきたいと思います。有難うございます。

>>927
v5.8.4ですので、バージョンは問題ないかと思います。
検証してみます。お手数おかけしましてすみません。
0930nobodyさん2005/10/13(木) 01:28:27ID:???
>>929
$query =~ /(?:^|(?<=\W))c=0(?:(?=\W)|$)/

分解すると

:^c=0 : $query の最初に c=0 があるとマッチ
(?<=\W)c=0 : c=0 の前に "[_0-9a-zA-Z] 以外" があったらマッチ
c=0(?=\W) : c=0 の後に "[_0-9a-zA-Z] 以外" があったらマッチ
c=0$ : $query の最後に c=0 があるとマッチ

(c=0(?=\W)) ってやらないで (c=0\W) ってやると、$1 に \W の文字が入ってしまうし、次のマッチの開始も \W の後の字からになってしまう。

つか正規表現スレにいくのはどうか。
0931nobodyさん2005/10/13(木) 01:37:50ID:???
>>766,920,922-925
相変わらず何やってるのかわからんw
もうちょっとソースの中に #コメント を入れてみたらどうか。
自分で見て何やってるか分かったとしても、他人はそうではないのだから。

csv なのに
split(/,/); じゃなくて split(/\t/); ってやってるのはいいんだっけ?

あと
> print WRITE_BBSDAT"$val,$aval ←じゃ縦にならんじゃう。横にそれぞれ上下で表示したい。";
わからん。
縦になったのなら 「それぞれ上下」 にはなったんではないのか。

$val,$aval
ってなりたいのか
$val
$aval
ってなりたいのか。

とりあえず入力されたデータに改行が入ってるままファイルに書き出したらアホなことになるから、
foreach my $k (keys %in) {
$in{$k} =~ s/\x0D?\x0A/<br>/g;
}
とか &ReadParse; の後にやってみたら?
0932nobodyさん2005/10/13(木) 01:47:35ID:???
>>922
ふう、やっとやりたいことがわかった
まず処理手順が問題。今の処理手順だと質問一つずるに対して出力処理をしようとしているけれど、
全ての質問を一つの行にまとめたいなら、保存しておいて後で出力しないと。

# 回答の表示
の頭で
my @vals = ();
my @avals = ();
の二変数を作ってforeachの最後で
push @vals, $val;
push @avals, $aval;
で、foreachを閉じてから、cvs出力で、
print WRITE_BBSDAT join(',', $in{name}, @vals);
print WRITE_BBSDAT join(',', '', @avals);
って感じ。
0933nobodyさん2005/10/13(木) 01:56:30ID:???
>>932 よくがんばったえらい
0934nobodyさん2005/10/13(木) 02:05:22ID:???
>>930
コレじゃダメなん?
(?:^|\W)c=0(?:\W|$)
09359092005/10/13(木) 03:20:42ID:???
>>930,934
すみません、色々と勉強してました。
試してみましたが、おかげさまでうまくいきました。

しかしながら私の知識がまだ追いついていないこともございますので、
これから精進していきたいと思います。

本当にご親切に有難うございました。
09367662005/10/13(木) 11:12:08ID:???


レス有難う御座います。勉強足らずで申し訳ないです。

教えていただいたとおりにやってみますた。
でもやっぱりcsvをexcelで開いた時に思う通りになつてなかた。。なんでだろう
もうわからん。。

最終的にはexcelで開いた時

$in{name} ←これはくり返さない。1回だけ表示(下のセルへ)
$val ←これはその問題数分だけ横にくり返し。excelの横セルはひとつずつ違うセルに。(下のセルへ)
$aval  ←同様。(下のセルへ)

次の人
$in{name}
$val 
$aval

てなっててほしいんです。
説明へたでごめんなさい。
09377662005/10/13(木) 11:16:18ID:???
現状ソース

# 回答の表示
my @vals = (1,2,3);
my @avals = (1,2,3);

my($qnum) = 0;
foreach (@question) {
($qval,$aval,@column) = split(/,/);
next if($qval eq "");

$qnum++;
$key = "Q".$qnum;
$val = $in{$key};
if($val eq $aval) {
$check = "○";
} else {
$check = "×";
}

$anum = 0;
$answer[$anum] = " ";
foreach (@column) {
next if(!$_);
$anum++;
$answer[$anum] = $_;

push (@vals, $val);
push (@avals, $aval);
}
09387662005/10/13(木) 11:17:24ID:???
# csvへ書き込み

open(WRITE_BBSDAT , ">> file.csv");
print WRITE_BBSDAT join(',', $in{name}, @vals);
print WRITE_BBSDAT join(',', '', @avals);
close(WRITE_BBSDAT);

すいません。。ここまで教えてもらったのに。。
0939nobodyさん2005/10/13(木) 17:05:23ID:tGcMLHwK
文字列の一部分を置き換える、という処理はどうすればいいでしょうか

入力されたデータによって、5文字目だったり12文字目の2文字分を
こちらで用意している(これも種類がいくつかある)2文字に置き換えたいんです

aaaaabbbbccddddeee → aaaaxxbbbccddddeee
aaabbbbcccdddddeef → aaabbbbcccddyydeef

一応
  ・置き換えたい位置を確認
  ・それより前をまず転記
  ・置き換え文字を転記
  ・置き換えたい位置よりあとを転記
という風にすれば可能だとは思うのですが、もう少しスマートな方法というのはあるのでしょうか?
0940ヽ(´ー`)ノ ◆.ogCuANUcE 2005/10/13(木) 17:12:57ID:???
>>939
substr() は?置換もできる。

my $str = 'foobarbaz';

substr($str, 1, 2) = 'OO';    # $str is 'fOObarbaz'
0941nobodyさん2005/10/13(木) 17:16:09ID:???
>>939
s/// か
substr() をあたりなされ。

aaaaabbbbccddddeee → aaaaxxbbbccddddeee
5文字目から2文字分を置換なら、

my $str = 'aaaaabbbbccddddeee';
substr($str, 4, 2) = 'xx';

お、先に書き込みが。
0942nobodyさん2005/10/13(木) 22:16:24ID:NiH4hrTC
ひさしぶりに掲示板を作ってます。
なんとか徹夜で終えて、明日の朝に間に合わせたいと思ってます。

思ったより疲れていて思い出せないのですが、
Text::CSV_XSの使い方何ですが、

「あいうえお
かきくえこ」

これってcombineを使えば改行をエスケープしてくれて、parseをしたときに自動で
元に戻してくれると思ってたのですが、勘違いですかね?
改行などその他すべての文字は必要に応じて自分でエスケープなどしないといけないのでしょうか?

でもそれだとこのモジュールの意味がないですよね・・・・;
CSVでのメタ文字?をエスケープしてくれた記憶があるのですが。。。。

どうぞよろしくお願いします。自分でも調べてみます。
0943nobodyさん2005/10/13(木) 22:19:27ID:???
>>942
>>1
http://search.cpan.org/~jwied/Text-CSV_XS-0.23/CSV_XS.pm
09449422005/10/13(木) 22:26:57ID:NiH4hrTC
>>943
英語は読めないので
http://www.perldoc.jp/docs/modules/Text-CVS_XS-0.23/Text-CVS_XS-0.23.pod
これは見ました。

ここに書いてないということは自分で<br>に変換するものでしたっけ?
よくよく考えたら別に自分でやっても大して面倒でもないレベルなのでどうでもいいですが。
"これだけかな?大丈夫なのは。
09459422005/10/13(木) 22:50:16ID:NiH4hrTC
返事がこないorz

もういいや

0946nobodyさん2005/10/13(木) 23:08:14ID:???
>>945
どのような高速返信処理をお求めで?
0947nobodyさん2005/10/13(木) 23:23:07ID:???
40分で返らないとだめなんかw
0948nobodyさん2005/10/13(木) 23:34:41ID:???
> 思ったより疲れていて思い出せないのですが、
ここワロタ
0949nobodyさん2005/10/13(木) 23:40:28ID:???
 徹夜するから3時ぐらいまででいいん…zzz
  <⌒/ヽ-、___
/<_/____/
0950nobodyさん2005/10/14(金) 01:39:33ID:???
>>936-938
入れる場所そこじゃなーいorz
配列の初期データはテストデータだろうから置いておくとしても…

foreach (@question) {
...
foreach (@column) {
next if(!$_);
$anum++;
$answer[$anum] = $_;
} # このforeachの中じゃない

push (@vals, $val);
push (@avals, $aval);
} # pushしたらforeach (@question)のブロックは終わり

# csvへ書き込み
...

だ。も一つ問題点。ログ出力するとき改行忘れてた。スマソ
print WRITE_BBSDAT join(',', $in{name}, @vals), "\n";
print WRITE_BBSDAT join(',', '', @avals), "\n";

> $in{name} ←これはくり返さない。1回だけ表示(下のセルへ)
> $val ←これはその問題数分だけ横にくり返し。excelの横セルはひとつずつ違うセルに。(下のセルへ)
> $aval  ←同様。(下のセルへ)
>>922といってることが違う気がするのだが。
名前を別の行にしたいなら、そこだけ出せばよろし

>>931が指摘してる点の修正もお忘れなく
> とりあえず入力されたデータに改行が入ってるままファイルに書き出したらアホなことになるから、
0951nobodyさん2005/10/14(金) 02:57:23ID:???
モジュールがどんな機能なのか一覧になっているとこはどこでしょうか。
日本語で。
0952nobodyさん2005/10/14(金) 06:40:23ID:???
>>951
>>11 >>13
09539392005/10/14(金) 12:01:06ID:???
>>940-941
ありがとうございました
もっとよく調べればよかった・・・orz
09547662005/10/14(金) 14:02:22ID:???
>>950

レス有難う御座います。ほんとうに感謝です。


やっぱり配列の初期データ違いますよね。。。orz


この場合は何をいれたらいいんでしょうか?
$valは自分の選択した解答番号、&avalは正解解答番号
なので、これでいいとおもったんですが。。。

oreach my $k (keys %in) {
$in{$k} =~ s/\x0D?\x0A/<br>/g;
}
とか &ReadParse; の後に。。。

ていうのもどこにそのそーすいれたらいいのか
わかりません。。

09557662005/10/14(金) 14:05:19ID:???
現状

# 回答の表示

  my($val) = ????; ←不明
   my($aval) = ????;  ←不明
my($qnum) = 0;
foreach (@question) {
($qval,$aval,@column) = split(/,/);
next if($qval eq "");

$qnum++;
$key = "Q".$qnum;
$val = $in{$key};
if($val eq $aval) {
$check = "○";
} else {
$check = "×";
}

$anum = 0;
$answer[$anum] = " ";
foreach (@column) {
next if(!$_);
$anum++;
$answer[$anum] = $_;
       }


09567662005/10/14(金) 14:06:55ID:???
push (@val, $val);
push (@aval, $aval);
} # pushしたらforeach (@question)のブロックは終わり

#csvへの書き込み
open(WRITE_BBSDAT , ">> file.csv");
print WRITE_BBSDAT join(',', $in{name}, @val), "\n";
print WRITE_BBSDAT join(',', '', @aval), "\n";
close(WRITE_BBSDAT);
0957nobodyさん2005/10/14(金) 20:23:06ID:???
がんばれ >>950
0958nobodyさん2005/10/15(土) 05:56:59ID:???
>>954-956
おまい…配列(@)とスカラ($)を混同してるだろ…
初期化のところは何も入れなくて良いんだよ。中身はpushのところで入れてるんだから
my @vals = ();
my @avals = ();
で。むしろ混乱しているならこの部分自体なくてもよろしい

> ていうのもどこにそのそーすいれたらいいのか
だから&ReadParse;の後だって。>>923のソースの一番最初にあるでしょ

ってか、そのソースなら間違ってるところもあるがとりあえずは動くはずなんだが…
ソース全体をうpして見たらどうだろう。期待する出力結果についても、$valとか使わず、
実際にどういう風に出力されて欲しいのかを具体的に書いてもらえないと多分みんな分かってない。
漏れの認識としては、
1問目の正解:1 1人目の回答:2 2人目の回答:3
2問目の正解:2 1人目の回答:3 2人目の回答:1
3問目の正解:3 1人目の回答:1 2人目の回答:2
なら
----------------------
1人目の名前,1,2,3
,2,3,1
2人目の名前,1,2,3
,3,1,2
----------------------
という感じなんだが…

漏れの説明能力も限界ですorz 誰か他の人に任...
0959nobodyさん2005/10/15(土) 13:04:17ID:???
乙w
とりあえず誰かが作ったほうが早いことはわかったw
0960nobodyさん2005/10/15(土) 14:18:15ID:???
phpからの移行かなぁ。
アレだと配列もスカラもハッシュも$だからなぁ。(あの仕様はどうかと思う)
0961nobodyさん2005/10/15(土) 14:28:17ID:???
他の言語は $ すらつかないのも多々あるけど、
どうせ $ つけるなら perl に合わせてくれてもいいのにな、とは思った。
0962nobodyさん2005/10/15(土) 15:59:18ID:vVuUdULb
CSV形式のログファイルで掲示板を作ったのですが、
改行をどうしようか悩んでます。

\nなどを見つけたら<br>にしてから書き込んで見ました。
しかし読込表示処理の法で、HTMLエスケープしてるので<br>がエスケープされてしまいました。

それで改行を<br>以外にちかんして、読み込むときにそれを<br>に戻してやろうと思いました。
で、何に置換するかで悩んでます。

いまのところ\tとかしかないかなと思ってますが、ほかにもっといいのはありますか?
09639622005/10/15(土) 16:19:46ID:vVuUdULb
返事ないか・・・
もういいや
0964nobodyさん2005/10/15(土) 16:27:50ID:???
&#13; とかオススメ。 今考えたけど。
つか最近こらえ性の無い人が多いですね。
0965nobodyさん2005/10/15(土) 16:33:09ID:???
いやそれ以前の問題でっしゃろ・・・二十分て
# 回答員はこのスレべったり張り付いてるわけじゃないということをry

phpBBに習った構造なんかもありだと思うよ。[br]みたいにしておいて出力時にtr/[]/<>/
こっちのほうがちと冗長だけど汎用性はある
0966nobodyさん2005/10/15(土) 16:51:14ID:???
次は10分だな。

ちなみに俺の回答は読み込み表示処理の見直しかな。
0967nobodyさん2005/10/15(土) 17:30:53ID:???
回答員ていいなw 点呼したら5人くらいしかいなさそうだが
エンティティは書き込み時に行うのが一番いいと思うなり
0968nobodyさん2005/10/15(土) 17:31:58ID:???
>964-966
掲示板とはどういうものかすらわかってない池沼はスルーで。
0969nobodyさん2005/10/15(土) 17:50:45ID:???
うむ、HTMLエスケープ → \n 直し → ログ書き込み → ログ読み込み ってやればそんなことおきないもんな
0970nobodyさん2005/10/15(土) 18:07:03ID:???
/\\/\\\\/g; /\r?\n/\\n/g;
もいいかもね。
0971nobodyさん2005/10/15(土) 18:38:22ID:???
>>970
そうすると 'hogehoge\n\\n<改行>' と書いたときに 'hogehoge\\n\\\\n\n' ってなるんだけど、
一発で '\\n' や '\\\\n' にマッチしないで '\n' だけにマッチするのって難しくない?
0972nobodyさん2005/10/15(土) 20:53:21ID:???
>>971
えっと、言ってる意味がよくわからないんだけど、コレじゃダメかな?

$txt = "hogehoge\\n\\\\n\n";
$txt =~ s/\\/\\\\/g; $txt =~ s/\r?\n/\\n/g; # escape
$txt =~ s/\\(.)/($1eq'n')?"\n":$1/ge; # unescape
0973nobodyさん2005/10/15(土) 23:27:59ID:???
例えば
<f\o\r\m \n\a\m\e="test" />
こうなってるHTMLタグから\を消そうと思い

$str = '<div>\\<f\o\r\m \n\a\m\e="test" />\\<br />';
$str =~s/(<[^>]*)?\\([^<]*>)/$1$2/g;

とやったのですがうまくいきません。結果として$strには

<div>\\<form name="test" />\\<br />

と、タグ内だけの\を省きたいのですがどのようにすればよいでしょうか?
0974nobodyさん2005/10/15(土) 23:41:42ID:???
>>973
ここでの問答や今やってる事を全て忘れて、
入門書を一冊買って読めばいいんじゃないかな。
もしくはつきっきりで教えてくれる人でも探すとか。
今の状態だと何スレ消費しても先に進まなそうだし。
0975nobodyさん2005/10/15(土) 23:43:09ID:???
Perlコーディングに関係ねーし
0976nobodyさん2005/10/15(土) 23:49:17ID:???
>>974
その反応待ってました。と言う事は難しく考えなければいいのか。
久々にやるから基本忘れてしまった・・・
0977nobodyさん2005/10/15(土) 23:51:09ID:???
時々でいいから正規表現道場の事を思い出してあげてくださいです・・・
http://pc8.2ch.net/test/read.cgi/php/1105930285/
0978nobodyさん2005/10/16(日) 00:09:56ID:???
>>973
タグ内だけ処理がしたいと。

my $str = '<div>\\<f\o\r\m \n\a\m\e="test" />\\<br />';
my @tag = ();
$str =~ s/(<.*?>)/push(@tag,$1);'<>';/eg;
foreach (@tag) {
s/\\//g;#好き勝手に処理
}
$str =~ s/<>/shift(@tag);/eg;

そもそもなんでそんな処理が必要なの?仕様の方を疑っちゃうよ。
0979nobodyさん2005/10/16(日) 00:33:05ID:???
>>978
サンキューです。
深い意味は無いですが、昔Perl使ってたの思い出してもう一度使おうかと思いとりあえず正規表現思い出すために自分で作った例題みたいな。
0980nobodyさん2005/10/16(日) 18:58:16ID:???
>>973
その正規表現で最初のキャプチャはこう
<div>\\<f\o\r\m \n\a\m\e="test" />\\<br />
     |←   $1   →| |← $2  →|
\e が最初なのは [^>]* が \ も食う最大マッチだからね
で、formタグ側は既にマッチし終えたから
(gオプションの)次はbrの方に行っちゃうのが一番大きい間違いだと思う
あとシングルクォート内でも \\ は \ に置き換えられるよ

gを使うならルックアラウンドアサーション使うか
1 while $str =~ s///; の形にするか
>>978のように2段階に分けて
sub myfunc { my $tmp = shift; $tmp =~ s/\\//g; $tmp; }
$str =~ s/(<[^>]*>)/ myfunc($1) /eg;
とかすればいいと思う
09817662005/10/16(日) 21:56:12ID:???
>>958

わけわかってなくてほんとうにゴメンなさい。。レス有難うございます。
csvに書き出して、それをDLしてExcelで開いたときに表示させたいのは、

1人目の名前: name1
その人の1〜3問目の回答番号: hoge1, hoge2, hoge3,
1〜3問目の正解番号: anser1,anser2,anser3

2人目の名前: name2
・
とすると

name1、hoge1, hoge2, hoge3,
”空欄”,anser1,anser2,anser3
name2、hoge1, hoge2, hoge3,
”空欄”,anser1,anser2,anser3
・
です。

現状は
name1、hoge1
”空欄”,anser1
name1、hoge2
”空欄”,anser2
name1、hoge3
”空欄”,anser3
・
て縦に並んでしましまいます。。


09827662005/10/16(日) 22:17:35ID:???

今の全ソースです。普通のFORM POST .htmlから飛ばしてます。
【question1.cgi】

#!/usr/bin/perl
require "cgi-lib.pl";
# 質問の取得

&ReadParse;
foreach my $k (keys %in) {
$in{$k} =~ s/\x0D?\x0A/<br>/g;
}

if(open(IFILE,"question_1.tsv")) {
while(<IFILE>) {
chomp();
push(@question,$_);
}
close(IFILE);
} else {
&Print_Error("質問設定ファイルを読み込めませんでした。");
}


09837662005/10/16(日) 22:18:42ID:???
# 回答ページの表示
print "Content-type: text/html\n\n";
print qq!
<HTML>
<HEAD>
<META Http-Equiv="Content-Type" Content="text/html;charset=EUC-JP">
<TITLE>回答</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<TABLE BORDER=1 WIDTH="800px" BGCOLOR="#ffffff">
<TR BGCOLOR="E2E2EE">
<TD WIDTH="60px"><FONT SIZE=2><B>質問番号</B></FONT></TD>
<TD><FONT SIZE=2><B>あなたの回答</B></FONT></TD>
<TD WIDTH="50px"><FONT SIZE=2><B>結果</B></FONT></TD>
</TR>
!;

09847662005/10/16(日) 22:19:34ID:???
# 回答の表示

my($qnum) = 0;
foreach (@question) {
($qval,$aval,@column) = split(/\t/);
next if($qval eq "");

$qnum++;
$key = "Q".$qnum;
$val = $in{$key};
if($val eq $aval) {
$check = "○";
} else {
$check = "×";
}

$anum = 0;
$answer[$anum] = " ";
foreach (@column) {
next if(!$_);
$anum++;
$answer[$anum] = $_;

}

push (@val, $val);
push (@aval, $aval);
0985nobodyさん2005/10/16(日) 22:23:39ID:???
何レスも使うんだったらどっかにうpしる
09867662005/10/16(日) 22:25:05ID:???
# csvへの書き込み
open(WRITE_BBSDAT , ">> file.csv");
print WRITE_BBSDAT join(',', $in{name}, $val), "\n";
print WRITE_BBSDAT join(',', '', $year), "\n";
close(WRITE_BBSDAT);

print qq!
<TR BGCOLOR="#ffffff">
<TD><FONT SIZE=2><B>$key</B></FONT></TD>
<TD><FONT SIZE=2>$val</FONT></TD>
<TD><FONT SIZE=2>$aval</FONT></TD>
</TR>
!;
}

print qq!
</TABLE>
</HTML>
!;

あとこれに名前がはいっていなかったら送信できないようにする機能も
つけたいです。。

csvの書き込みと名前はいってなかったらエラーが動いたら完成なんです。
perlとかこれがほんとに初めてで、なんとかここまでやりました。。
どうかご指導お願いいたします。。実は仕事なんです。助けてください。。泣
0987nobodyさん2005/10/16(日) 22:31:22ID:???
よもまつだな。
0988nobodyさん2005/10/16(日) 22:38:54ID:???
>>986
おまいのコードのデバッグをしてやるスレじゃないよ。

問題が再現する最短のコードを載せるべし。

> 今の全ソースです。

今の全ソースなど載せるなよ。
09897662005/10/16(日) 22:51:45ID:???
みなさんのおっしゃるとおりです。。スレの無駄遣いすいません。。
0990nobodyさん2005/10/16(日) 22:59:21ID:???
>>987の日本語が釣りであることを願う
0991nobodyさん2005/10/16(日) 23:04:21ID:???
>>990が釣りであることを願う
0992nobodyさん2005/10/16(日) 23:45:46ID:???
>>766
手伝ってやろうかとも思ったが「仕事」の二文字を見た瞬間にその気が失せた。
おまいもう少し考えて行動汁。
09937662005/10/16(日) 23:51:24ID:???
すません。。ここしかたよるところがなくて。。なんとかご指導願えませんでしょうか?ヒントだけでも結構です。後は自分でなんとかしたいと思っています。

何卒宜しくお願いいたします。。
0994nobodyさん2005/10/16(日) 23:56:43ID:???
ヒントならいっぱい出てるし。
がんばって勉強してください。
仕事ならなおさらです。
0995nobodyさん2005/10/16(日) 23:59:50ID:???
>>766
正直、このスレに完璧な答えが出てる。
これでわからないならもうその仕事は破棄しなさいな。
それが先方とお前の為だよ。
0996nobodyさん2005/10/17(月) 00:15:20ID:???
え、仕事をこのスレで質問?
よもまつですな。

ヒキがいうのもなんだけど。
0997932=950=9582005/10/17(月) 00:45:14ID:???
すまん、ソース全うpを提案したのは漏れだ。
>>766のところに上げて欲しかったんだけどな…

とりあえず次スレたててくる
0998nobodyさん2005/10/17(月) 00:48:33ID:???
Perlコーディング初心者質問スレ Part 44
ttp://pc8.2ch.net/test/read.cgi/php/1129477637/
0999nobodyさん2005/10/17(月) 00:48:38ID:???
仕事は今週中に   あと2日もあれば
やるぞ♪         余裕余裕         週末家で・・・        怒られればいいか・・・
  ∧∧    ∧∧      ∧∧  . .::::::::::::::::::::::::::┃::::::::::::::::::::::::::::::::::::::::::::  ∧||∧
 (・∀・)  ∩・∀・)   (・∀・)∩..::: ∧∧:::::::::::┃:::::::::::::::::::::::::::::::::::::::::::::::::(  ⌒ヽ
 / ⊃⊃ ヽ  ⊃ノ  /⊃  / .. :::('д` )::::::::┃::::∧ ∧::::::::::::::::::::::::::::::::::: ∪  ノ
 (  (    ヽ  )つ〜( ヽノ ...:::と  ヽ::::::::┃: ('д` )::::::(   )⌒ヽ;:::::::::: ∪∪
  (/(/'    (/     し^ J.. ...:::⊂,,_UO〜:┃:::(∩∩ ):::::|/.|/uと  )〜:::::::::::::::
      まだ2日間しか     残業すれば・・・    2chで聞けば・・・
                                         ↑
                                        今ここら辺
1000nobodyさん2005/10/17(月) 00:49:51ID:???
次スレたってる模様

Perlコーディング初心者質問スレ Part 44
http://pc8.2ch.net/test/read.cgi/php/1129477637/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。