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

【Perl】初心者コーナーPart9

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/12/28 23:21ID:SPLRvqQi
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

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

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

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけど、なんか質問ある?part5】
http://pc.2ch.net/test/read.cgi/php/1009331505/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/

過去ログ、その他の役立ち情報は>>2-10を見よう。
0186名無しさん@お腹いっぱい。02/01/15 11:29ID:???
( ´ ・∀・`) へー
018718502/01/15 13:37ID:mJdfZzdE
>184
なんだ。そのままで動くやん。
「sub内でのmy変数のリファレンスを返す」こと自体は全然マズくないよ。
018818402/01/15 15:41ID:DyvaVHMP
>187
>「sub内でのmy変数のリファレンスを返す」こと自体は全然マズくないよ。
ああ、そうなんだ。ありがとう。
0189名無しさん@お腹いっぱい。02/01/16 02:09ID:JQVH7PKS
ふーむ。sub呼ぶ度にheapに%retが確保されるようなイメージですかね。

sub foo {
my ($k, $v) = @_;
my %ret;
$ret{$k} = $v;
\%ret;
}

my $r1 = &foo('key1', 'var1');
print $r1 . "\n";
print $$r1{"key1"} . "\n";

my $r2 = &foo('key2', 'var2');
print $r2 . "\n";
print $$r2{"key2"} . "\n";

print $r1 . "\n";
print $$r1{"key2"} . "\n";

$ ./x.pl
HASH(0x8105ce4)
var1
HASH(0x80f857c)
var2
HASH(0x8105ce4)

$
0190102再びです。02/01/16 10:23ID:MJHKAqJj
どうも、以前にも質問しました。
時間が空いたのでもう一度書き直してみましたが、動作しません。
出席簿みたいな感じのCGIです、
少しチェックして欲しいです。


require'jcode.pl';
require'cgi-lib.pl';

&ReadParse(*answer);

$name="$answer{'name'}";

open(DATA,">>./log.dat");
while(@dname=<DATA>){
foreach $key(@dname){
($namelist,$count)=split(/,/,$key);
if($namelist eq $name){
++$count;
}
}
print DATA "$name,$count";
0191102再びです。02/01/16 10:24ID:MJHKAqJj
>>102 です。
0192名無しさん@お腹いっぱい。02/01/16 10:52ID:???
openの後が意味不明、何がしたいのか説明してみてくれる?
0193102再びです。02/01/16 10:57ID:MJHKAqJj
(名前、カウント数)
でデータを保存したいのです。
それを参照して同じ名前があったらカウント数増加、
なかったら新規で作成という感じにしたいのです。
0194名無しさん@お腹いっぱい。02/01/16 11:04ID:???
>open(DATA,">>./log.dat");
追記モードで開いてもポインタがファイルの終端を指しているから
データの読み込みは無理。
SEEKするか?

>while(@dname=<DATA>){
↑これは
>@dname = <DATA>;
こうするか
>while(<DATA>){
こうしなさい。
どちらにしても、追記モードでオープンしてるんじゃ無理。
0195102再びです。02/01/16 11:08ID:MJHKAqJj
おぉ、分かりました。
open(DATA,"+>./log.dat");
にして入出力用にすればいいのかな
もうちょっとのところまできてるんでしょうか?
とりあえずもうちょっと修行します。
また、報告させていただきます。
0196名無しさん@お腹いっぱい。02/01/16 11:11ID:???
>SEEKするか?
( ´ ・∀・`) へー
0197名無しさん@お腹いっぱい。02/01/16 11:16ID:???
>196
追記モードだとSEEKでも前に戻れなかったね。
スマソ。

>195
とりあえず書いてみろよ。
ローカルでテストする分には誰も文句言わないから。
0198超初心者02/01/16 12:10ID:zfCnc17S
Grepについて教えてください

open IN, "highschool.csv";
while ($line = <IN>){
if ($line eq '') { print "(空行)<hr>\n"; next;}
@splited = split (/\n/, $line);
$test = @splited;
@test = grep (/東京/, @splited);
print "@test<hr>\n";
}
close IN;
とhighschool.csvを読んで「東京」というキーワードでGrepかけ、検索結果を<HR>つきで表示させたいのですが
マッチしなかったところにも<HR>がついちゃいます。どのように回避するのかお教えください、
0199名無しさん@お腹いっぱい。02/01/16 12:16ID:???
@splited = split (/\n/, $line);
これが何やってるかが分からないから
その後も何やってるかが分からない
@splited に何を入れたいんだろう・・・
0200名無しさん@お腹いっぱい。02/01/16 12:25ID:???
open (IN, "highschool.csv");
while (<IN>) {
if ($_ eq "") {
print "空行<hr>";
} elsif (index($_, "東京") >= 0) {
print $_, "<hr>";
}
}
close (IN);
0201超初心者02/01/16 12:38ID:zfCnc17S
>>199
一応読んだcsvを改行コードで区切って@に入れてるんですが。間違ってますか?
それと198で訂正がありましたすみません
open IN, "highschool.csv";
while ($line = <IN>){
if ($line eq '') { print "(空行)<hr>\n"; next;}
@splitted = split (/\n/, $line);
@test = grep (/東京/, @splitted);
print "@test<hr>\n";
}
close IN;
0202名無しさん@お腹いっぱい。02/01/16 12:45ID:???
>201
一行ずつ読み込んで、改行マークでsplitしたって、全文が$test[0]に入るだけでしょ?
csvファイルの区切り文字って\nでしたっけ?
0203超初心者02/01/16 12:52ID:zfCnc17S
>>202
いえこの時点でカンマで区切る必要はなく、改行で区切る必要があったんです。
0204名無しさん@お腹いっぱい。02/01/16 12:58ID:???
>while ($line = <IN>){
これはなにをしてる所?
俺は「ファイルから1行ずつ呼び出す」ものだと思ってるんだが。
つまり\nが二つ以上ある可能性はないのだけれどね。
0205名無しさん@お腹いっぱい。02/01/16 13:01ID:???
open IN, "highschool.csv";
while ($line = <IN>){
$c++;
print qq($c行目 $line\n);
@splitted = split (/\n/, $line);
foreach $i(0 .. $#splitted){
print qq($c行目$i個目の要素 $splitted[$i]\n);
}
}
close IN;

とりあえずこれを実行してみて何が起きているか考えてみてくださいな。
0206名無しさん@お腹いっぱい。02/01/16 13:02ID:???
つか200で良いべさ。
0207超初心者02/01/16 13:15ID:zfCnc17S
皆様。ご指導ありがとうございました。
>>200さんのアドバイスでできました。
ホントお恥ずかしい・・・
0208 02/01/16 20:19ID:???
@char=('0'..'9','a'..'z','A'..'Z');

という62文字を使って 1 (あるいは 0)から ZZZZZZZZ までの
62進数を順番に生成したいのですが、上手にやる方法はありますか?
0209名無しさん@お腹いっぱい。02/01/16 20:36ID:???
http://pc.2ch.net/test/read.cgi/php/1009549309/40-41
0210名無しさん@お腹いっぱい。02/01/16 20:41ID:???
2週間もやってるのか  (笑
0211名無しさん@お腹いっぱい。02/01/16 21:30ID:???
>208
生成した数値(文字列)をどうしたいのか
配列に入れると218340105584895個要素が居るがそれでも良いのか
つーか41で分からんの?
0212名無しさん@お腹いっぱい。02/01/16 22:55ID:iUy26tny
リンクを張られた文字の隣にクリックされた回数を表示するにはどうすればいんですか?
0213名無しさん@お腹いっぱい。02/01/17 02:36ID:???
> 208
簡単過ぎ

@char= ('0'..'9','a'..'z','A'..'Z');
for $char ( @char ){
print &xxx($char),"\n";
}
sub xxx{
my( $ret, $flg );
for ( reverse split(//, $_[$[]) ){
unless ( $flg ){
if ( $_ eq 'Z' ){
$_= '0';
}
else {
if ( $_ eq '9' ){ $_= 'a'; }
elsif ( $_ eq 'z' ){ $_= 'A'; }
else { $_++ ; }
$flg= 1;
}
}
$ret= $_ . $ret;
}
$flg ? $ret : "1$ret";
}
0214名無しさん@お腹いっぱい。02/01/17 02:41ID:EnQVX8GI
$foo->{hoge};
と
$foo->hoge;
は、上がハッシュだとして、下のは何を表すんでしょうか?
0215名無しさん@お腹いっぱい。02/01/17 02:50ID:???
>214 メソッド。
021621402/01/17 02:55ID:EnQVX8GI
ありがとうございます。これがメソッドか…
0217名無しさん@お腹いっぱい。02/01/18 02:21ID:/Sq0HWtq
えと、Perlのスクリプトの速度比較、つまりベンチマークをしたいのですが、なにか方法はないでしょうか?
0218名無しさん@お腹いっぱい。02/01/18 02:24ID:???
>>217 Benchmark.pm
0219名無しさん@お腹いっぱい。02/01/18 12:15ID:/Sq0HWtq
>>218さんありがとうございます。
試しに「for」と「while」のベンチマークをしてみたところ
やや「while」の方が効率がいいようですね。<読み込むスクリプトでは
まだ簡単なスクリプトでしか試してないので、分かりませんが。
0220名無しさん@お腹いっぱい。02/01/18 13:09ID:mZLIoXNk
perlでこの行を入れてアップすると500エラーになるんですよ。
my $query = $ENV{'QUERY_STRING'};
Win用のアパッチでテストした時は良かったんです。
理由を教えていただけませんか
0221名無しさん@お腹いっぱい。02/01/18 13:17ID:???
Perlが腐ってるから
myを外そう
022222002/01/18 13:22ID:mZLIoXNk
ありがとうございます。即効解決しました。
Perlが腐ってるんですね。
感謝
0223名無しさん@お腹いっぱい。02/01/18 15:03ID:???
>>221
解説希望。うちだとエラー起きないから、何処が腐ってるのかわかんない・・・
0224!22102/01/18 16:23ID:???
>>223
Perlが5より古くてlocalしかないとか?
0225名無しさん@お腹いっぱい。02/01/18 17:07ID:???
俺のプロバのPerlが4なんだけど、myを入れるとエラーになるよ。
ということで>224に同意。
022622302/01/18 17:21ID:???
腐ってるって、そういう意味か・・・・・・
0227名無しさん@お腹いっぱい。02/01/18 18:49ID:???
ぷ
0228名無しさん@お腹いっぱい。02/01/18 19:10ID:6q/Kp0dN
今、perlの勉強していて、SSIを使ってアクセスカウンターを作りました。
それで、できたplファイルとshtmlを同じ階層に入れて、
shtmlをブラウザ(IE6.0)で開いて確認しようと思ったんですが、
開けないんです。どーしたらいいんでしょーか。
スクリプトは間違ってないと思うんですが。。。
0229 ◆efPZis9A 02/01/18 19:29ID:y3hRDyTH
パーミッションはどうよ?
023022802/01/18 19:34ID:6q/Kp0dN
パーミッションはどうなってるか分かりません。
Apache起動して、ローカルでテストしてます。
ブラウザの右下にある青いバーが
増えていってるだけで画面は何も変わりません。
0231名無しさん@お腹いっぱい。02/01/18 20:11ID:TBZ1H2T9
正規表現で「?」を検索したいんですが、「\?」だと上手く動作しません。
別の方法があるのでしょうか。
0232名無しさん@お腹いっぱい。02/01/18 20:35ID:???
>230
アクセスカウンターが無限ループしてるとかじゃないの?

>231
\?で大丈夫のはずだよ。
念の為にローカルで試してもみたけど、普通に出来た。
その前後の文に問題があるんじゃないのかな?
0233名無しさん@お腹いっぱい。02/01/18 21:06ID:???
>232
無限ループは無いと思います。サンプルファイルでもやってみました。
アドレスに、
127.0.0.1/*.shtmlとやってますが、白いまんま。
shtmlをhtmlにかえると表示はされるのですが、スクリプトは動かないです。
shtmlのアイコンは、IEのアイコンにならないの?
0234名無しさん@お腹いっぱい。02/01/18 21:08ID:???
>232
そのカウンタを直接呼び出したら?

てゆーか、ApacheのSSIの設定が通ってないとかは?

アイコン変える方法は、ファイルの関連付けでしょう。
023523202/01/18 21:18ID:???
できました。
原因は、本に誤りがあったようです。ホームページで確認しました。
<!--#exec cmd="*.pl"-->
を
<!--#exec cgi="*.cgi"-->
に変えろということでした。変えたところ、上手くいきました。
どうもありがとうございました。
0236名無しさん@お腹いっぱい。02/01/18 23:49ID:vKcOvEew
カレンダーを作ろうとしています。
例えば2002年1月1日の曜日を知りたい場合、以下の式で分かるのですが、なぜこ
れだけで分かるのでしょう?

($year + ($year-1)/4 - ($year-1)/100 + ($year-1)/400) % 7

上の式で出た余りを対応させれば2002年の最初の日の曜日が出ますが、これだけ
でなぜそうなるのか全く分かりません。

また、

$i = ($year + ($year-1)/4 - ($year-1)/100 + ($year-1)/400);

とした上で、

2002年4月1日の曜日を知りたい場合はその前の月(1月から3月まで)の日の合計
(31+28+31)を$iに足して7で割り余りを出すと出て来ます。

($i+(31+28+31)) % 7

でもこの仕組みが良く分かりません。そもそもなぜ年だけで、任意の年の最初の
日の曜日が分かるのか、また、それをもとにしてどうして任意の年の任意の月の
最初の曜日まで分かるのか全く分かりません。

どなたか説明をお願いできますか。
0237名無しさん@お腹いっぱい。02/01/19 00:07ID:???
上の100で割ったりするのは、まあ公式だ
Zellerの公式で検索してみて

ここに、日付け絡みのサンプルが色々出てるから必読
他にも役に立つしね
http://www.din.or.jp/~ohzaki/perl.htm

0238名無しさん@お腹いっぱい。02/01/19 01:59ID:tDZ3djB8
すいません・・・超初心者なんですが、よろしくおねがいします!

win98に、間違ってwinNTのPerlをインストールしてしまったんですが、
アンインストールはどうすればいいのでしょうか???

C:を「Perl」とか「NT」で探したら、Temporaryフォルダにしか
ないみたいなんで大丈夫かな?と思ったんですが、
インストーラーをもう一回起動させたら、
『指定されたサービスはすでに存在します』
ってエラーメッセージが!!!!

『アプリケーションの追加と削除』には、何もできてません。
どなたかお助けーーーー!
0239agege02/01/19 05:21ID:???
> 238
C:がダメならD:があるさ
0240Tupple3d02/01/19 05:30ID:tSYJ2BTR
すんまそん。Web制作板から来ました。

$a = 1;
$a = $a++;

Perlで$aの値はどうなりますか?
0241agege02/01/19 06:00ID:???
> 240
「すんまそん」って、出だしから寒すぎて手がかじかんでうまく答えがかけないよー。
どうしよー。
024224002/01/19 06:28ID:???
分かったー!

Perl : 1
Java : 1
C(gccだっと思う) : 2
JavaScript : 1

>>241 お前もなかなか
0243名無しさん@お腹いっぱい。02/01/19 06:34ID:???
$a = 1;
$a = $a++; # $aは 1
$a = ++$a; # $aは 2
0244名無しさん@お腹いっぱい。02/01/19 07:06ID:tDZ3djB8
上書きで無事アンインストールできたよーーーー^^
0245名無しさん@お腹いっぱい。02/01/19 07:21ID:???
>244
おめでとう
0246名無しさん@お腹いっぱい。02/01/19 15:46ID:b2nTXpDv
Flash5とcgiの絡みの勉強してるのですが、
FlashからデータをPOSTで送信しようとすると、
データが渡ってないようです。
GETだとちゃんとわたってます。
cgiはこんな感じです。(一部ですが)

#フォームデータの取得
if($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN,$query,$ENV{'CONTENT_LENGTH'});
}
else{
$query=$ENV{'QUERY_STRING'};
}
0247初心者02/01/20 06:05ID:+Bzlb+s3
Perlで書かれたCGIスクリプトを自分で読んで解析しています

サブルーチンの定義のところで

sub FormThList($;$)
{
   処理・・・
}

という部分をいくつも見かけます

引数にある" $;$ " という部分は何をあらわしているのでしょうか?
自分で書籍やWebを調べてみたりしたのですが、引数なのか、リフ
ァレンスなのか、それとも他のものなのか、さっぱりわかりませんでした。

どなたかお分かりの方ご教授ください。宜しくお願いいたします。
0248名無しさん@お腹いっぱい。02/01/20 15:18ID:GAoGOGYW
あげ
0249  02/01/20 17:22ID:xUMdAd4X
$_は、あれ、をあらわします。
ほら、あれもってきて。って、よく、彼女とかにいってるでしょ。
そのあれ。だよ。
0250名無しさん@お腹いっぱい。02/01/20 17:58ID:???
>>247
引数の形式を指定してる。
$はスカラー。;以降は省略可。 ほかにもいろいろ指定できる。
詳しくはperldoc perlsubか,プログラミングPerl改訂版133Pを参照のこと。
0251名無し02/01/20 21:19ID:Nggbj65w
勉強ついでに指定ディレクトリのファイル全文検索作ってみたんですけど、キーワードに日本語入れるとうまく動かないんですがなぜでしょう?

$dir = ''; # 指定ディレクトリ
$file = '.html'; # 検索対象ファイルの拡張子
$key = ''; # キーワード
opendir(DIR,$dir);
@files = readdir(DIR);
closedir(DIR);
foreach (@files){
if(/$file$/){
open(FILE,"$dir/$_");
@data = <FILE>;
close(FILE);
foreach (@data){
$seach = $seach . $_;
}
if($seach =~ /$key/i){
push(@list,$_);
}
}
}
foreach (@list){
print;
print "\n";
}
0252名無しさん@お腹いっぱい。02/01/20 21:26ID:???
>251
URLデコードをしてないとか。
「ー」が含まれてるとか。


余談だけど無駄が多いからもうちょっとシェイプアップした方がいい。
grep使うとか。
0253名無しさん@お腹いっぱい。02/01/20 23:36ID:9LP6jm+w
>>251
EUCの場合

$EUC_JP = '(?:[\x00-\x7F]|[\xA1-\xFE][\xA1-\xFE]|\x8E[\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE])';
if $seach =~ /^$EUC_JP*$key/i {
...

perlメモだかに、詳しく載ってた気がする。
0254agege02/01/21 03:26ID:???
> 250
それにしてもサブルーチンに引数の形式を指定するメリットがわかんないんだけど、
どういうことYO!

単に引数形式を明確にするだけのこと?

うーん!こんやも眠れない。
0255名無しさん@お腹いっぱい。02/01/21 03:31ID:???
>>254
眠れないんだったらperlsub読みなよ。
どういうときに使うのか書いてある。
0256名無しさん@お腹いっぱい。02/01/21 03:39ID:???
仮引き数書けない方がずっと異常です
逝っちゃってますねもう
0257agege02/01/21 03:47ID:???
> 256
なるほど、漏れが異常なのか。チョットだけ安心しました。
255さんの提案でperlsub読んでだいたいはわかりました。
それにしても今までラクダ本しか読んでなっかったからバージョンアップに伴う追加・更新部分は
未知な部分が多いネー。
0258あうあうあう02/01/21 07:42ID:???
Win98+ActivePerlで勉強しようと思うのですが、
日本語部分は(メッセージなど)EUCで書くのが正解と聞きました。
ところが、DOSプロンプトだとEUCは文字化けします。
Shift-JISで書けば、DOS上では問題ないですが・・・。
どうしたらよいですか?
print "日本語いーゆーしーだ!";
とかでやると
ニ・ワク・、。シ、譯シ、キ。シ、タ。ェ
になります。
0259名無しさん@お腹いっぱい。02/01/21 09:52ID:yXZYknLA
>258
S-JISで全然問題ない。
0260名無しさん@お腹いっぱい。02/01/21 12:43ID:O1LRho5n
フォームメールのCGIを作ってみてるんですが、半角スペースが入るとスペース
以降のデータが受取れません。

流れとしては、HTMLフォームから入力して送信ボタン→確認画面で送信ボタン→メール送信
というもので、確認画面ではスペースはちゃんと入ってて、例えば「山田 まさし」
と入るのですが、その確認画面から「送信」ボタンを押して再度同じCGIを呼びだして
データを受取ると「山田」で切れてしまうです。
$value =~ tr/+/ /;この行で送られてきたスペースコード(+)をスペースに変えて
いるのですが、再送信するときには変換されたスペースをまた(+)のようなコードに
戻してあげないとダメなんでしょうか?
試しに普通の+に戻してみたらそのまま+が出てきてしまいました。。
わかりづらくてゴメナサイ、アドバイス貰えればありがたいです。
0261aaa02/01/21 13:36ID:7eJzqhDP
Perl関連のほしい本があるんですが、その本が5.6対応では
ありませんでした。(elements programming with Perlです。)
5.5?やってから5.6本やってもおそくないですか?
あと、支障とかないですか?
0262茶文字 ◆xELvisFU 02/01/21 15:57ID:0ovwchs4
テキストファイルを読み込んで、1行目を<title>と<h1>に、2行目を<h2>にするようにしたいのです。

open FILE,"xxx.dat";
@page = split(/\n/,<FILE>);

print <<"EOH";
<html>
<head>
<title>$page[0]</title>
</head>
<body>
<h1>$page[0]</h1>
<h2>$page[1]</h2>
EOH

$count = 0;
foreach $i(@page){
if ($count > 1){
print $page[$i];
}
}
print "</body></html>";

close FILE;

2行目を$page[1]として<h2>に、3行目以降をforeachで順に出力するつもりで
以上のように書いたのですが、$page[2]以降を取得できないようです。
どこで勘違いしているのでしょうか?
0263名無しさん@お腹いっぱい。02/01/21 16:08ID:???
>262
>foreach $i(@page){
ここに問題がある。
この場合、$iには何が入るのかな?
俺は数字じゃないように思えるんだが。

>foreach $i(1 .. $#page){
との違いはわかるかな?
0264名無しさん@お腹いっぱい。02/01/21 16:09ID:???
>foreach $i(2 .. $#page){
こっちが正しいな。
修正する前に書き込んじまった、スマソ。

あともう一つ質問。
$countはずっと0のままでいいのかな?
数字が全然増えてないから、if文の中に入れないようにも見えるぞ。
026525102/01/21 16:14ID:???
>>252
URLをデコードするってどういうことでしょうか?
よくわからないのですが。
026625102/01/21 16:17ID:???
検索したらすぐ出てきました。迷惑かけてすいません。
逝ってきます。
0267茶文字 ◆xELvisFU 02/01/21 16:21ID:???
>>264
をっとスマソ
うまくいかないので別の方法で無理やり辻褄あわせてて、もとのスクリプトと
違うこと書いちゃいました。

$count++をforeachの最後に入れて、print $page[$count];にしてたはず・・・

うがー なんでこんなところにひっかかってんだ私;
0268名無しさん@お腹いっぱい。02/01/21 16:25ID:yxhIL91Y
>267

俺ならこんな感じ。チェックしてない。

open (FILE,"xxx.dat"); @page = (<FILE>); close (FILE);
$page[0] =~ s/\n//g;
$page[1] =~ s/\n//g;

print <<"EOH";
Content-type: text/html; charset=Shift_JIS

<html>
<head>
<title>$page[0]</title>
</head>
<body>
<h1>$page[0]</h1>
<h2>$page[1]</h2>
EOH

$count = @page;
for($i = 2;$i <= $count; ++$i) {
$$page[$i] =~ s/\n/<BR>\n/g;
print $page[$i];
}
print "</body></html>";
0269名無しさん@お腹いっぱい。02/01/21 16:26ID:yxhIL91Y
>268
ミス
>$$page[$i] =~ s/\n/<BR>\n/g;
$一個おおいっすスマソ
0270名無しさん@お腹いっぱい。02/01/21 16:28ID:???
>>260
print "Content-Type: text/plain\n\n";
print $ENV{QUERY_STRING}
とかやってデータを確認したら?
確認後のエンコード周りがあやしい。

>>261
5.6触ったこと無いが,
Perl5.6は仕様を足しただけみたいだから
Perl5やってからでも特に支障無いと思う。
0271茶文字 ◆xELvisFU 02/01/21 16:28ID:???
>>268
あ 何となくどこで勘違いしているのかわかったかも。
さっそく試して報告するです。
ありがとうございました。
0272 02/01/21 16:30ID:VXT1KPc/
shift @page;
foreach (@page){
print $_;
}
じゃいけんの?
$countってどこでインクリメントするの?
0273  02/01/21 16:36ID:rALZtRCf
print <<"EOH";
Content-type: text/html; charset=Shift_JIS

<html>
<head>
<title>$page[0]</title>
</head>
<body>
<h1>shift(@page)</h1>
<h2>shift(@page)</h2>
EOH

foreach (@page){
print $_;
}
具体的にはこうか?
0274 02/01/21 16:38ID:pTKsFCnA
あ、全然だめだ。スマソ。逝ってきます。
0275傍観者02/01/21 16:40ID:bIKApu3O
268完璧だと思うんだけど、文句いう奴いるんだよな
0276ほげ02/01/21 16:41ID:bIKApu3O
268でいいと思われ
0277茶文字 ◆xELvisFU 02/01/21 16:50ID:???
できました。
268は完璧でした。

>>272
$countがインクリメントしていないのは私の転記ミスです。
0278名無しさん@お腹いっぱい。02/01/21 16:52ID:???
>>275-276 = 268
名前変えてもID出てるぞ。
0279名無しさん@お腹いっぱい。02/01/21 16:53ID:???
>>275-276
TMTOWTDIってことで、色々出てくるのはいいんじゃねーの。
0280名無しさん@お腹いっぱい。02/01/21 16:55ID:???
>>273
おしい。
ヒアドキュメントの中では @{[shift @hoge]} のように使うと吉。
0281名無しさん@お腹いっぱい。02/01/21 17:00ID:yxhIL91Y
あ!、もう出来たんだね。
でも、せっかく作ってきたので書いちゃう。

どうしてもforeach使うんだったらこんな感じ。
やっぱしチェックしてない。

open (FILE,"xxx.dat"); @page = (<FILE>); close (FILE);
$page[0] =~ s/\n//g;
$page[1] =~ s/\n//g;

print <<"EOH";
Content-type: text/html; charset=Shift_JIS

<html>
<head>
<title>$page[0]</title>
</head>
<body>
<h1>$page[0]</h1>
<h2>$page[1]</h2>
EOH

$i = 0;
foreach (@page){
if ($i ne "0" && $i ne "1"){
$_ =~ s/\n/<BR>\n/g; print $_;
}
++$i;
}
print "</body></html>";
0282名無しさん@お腹いっぱい。02/01/21 17:01ID:yxhIL91Y
>278
お、おれ?
おれかよ!(笑)
0283 02/01/21 17:01ID:???
open (FILE,"xxx.dat");
@page = (<FILE>);
close (FILE);
$title = shift(@page);
$h2 = shift(@page);
print <<"EOH";
Content-type: text/html; charset=Shift_JIS

<html>
<head>
<title>$title</title>
</head>
<body>
<h1>$title</h1>
<h2>$h2</h2>
@page;
</body></html>
EOH
0284茶文字 ◆xELvisFU 02/01/21 17:11ID:???
みなさんありがとう。
それぞれのサンプルもきちんと見て勉強させてもらうです。
WebProg板サイコー(・∀・)イイ!
0285名無しさん@お腹いっぱい。02/01/21 17:14ID:???
>>282スマソ勘違い
ということで>>275-276はギャフンと言え
■ このスレッドは過去ログ倉庫に格納されています