【Perl】初心者コーナーPart10

このエントリーをはてなブックマークに追加
952nana.cgi:02/03/26 11:46 ID:???
#!/usr/binbin/perl -T
no strict;
use Asian::Pussy qw/:sexy :healthy/;
953nobodyさん:02/03/26 12:00 ID:pm1MjUop
Perl4で作ったBBSがIE以外で表示できません。
ナゼなのでしょうか。

1.NNの場合、Perlが出力したソースが表示されます。
2.Operaの場合はファイルダウンロードのダイアログが起動します。

IEでは問題ないんですけど
私がアフォだからっていう以外の理由を知りたいです。
お願いします。
954nobodyさん:02/03/26 12:01 ID:???
print "Content-type: text/html\n\n";
ってやってるあたりがおかしいから。
955953:02/03/26 12:22 ID:???
>>954
あたりって・・・見たところ良いみたいなんですが(涙。
こんな現象は良くあるんでしょうか?
956 ◆Googlexo :02/03/26 12:29 ID:???
>955
君の良いと正解の良いには違いがある可能性があります。
とりあえずソース晒してください。
957953:02/03/26 12:48 ID:???
>>956
その「あたり」でいいですか?
print<<END;
Content-type: text/html\n\n
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
958nobodyさん:02/03/26 12:52 ID:???
>957
それ以前にprintをしている可能性は?
959953:02/03/26 13:02 ID:???
>958
なさそうです。敢えて言えばサブルーチン名にPrintPageっていうのを使ってます。これは問題ないですよね。
960nobodyさん:02/03/26 13:09 ID:???
ヒアドキュメントの中に\n\nとか書いても解釈されるんだ。はじめて知った。
とりあえずCGIファイルの先頭あたりで
print "Content-type: text/html\n\n";
して様子を見てみるとよいかと。
961nobodyさん:02/03/26 13:13 ID:???
>960
ヒアドキュメントでも
print <<'END';
ってやったら解釈されないから注意。
シングルクォーテーションだと解釈されないのは同じだから。
でも、覚えておくと逆に便利な事もある。
メアドをプリントする時とか\入れなくて済むし。
962953:02/03/26 13:20 ID:???
>>960
>とりあえずCGIファイルの先頭あたりでprint "Content-type: text/html\n\n";
これで正常になりました。

やはり以前のステップに問題があるんだろうと思いますが
現象が解消したので、じっくりゆっくり調べます。
本当にありがとうございました。
963960:02/03/26 13:54 ID:???
>>961
今実験してみたらそうみたい。
さんくす。
>>953
とりあえずよかったねぇ。
がんばって調べろよー。
964超・超初心者:02/03/26 14:40 ID:6InRaAYk
どなたか助けて下さい!以下の2つのプログラムの作り方が
全然わかりません。

  任意の10億までの数を入力して、
  その素因数分解して、その結果を出力
  するプログラムをPERLを使って作成
  してください。


  ファイル名と文字列を入力すると、
  その文字列がそのファイルに含まれるか
  どうかを検査し、含まれていた場合は、
  ファイルの何行目に含まれているかを
  出力するプログラムをPERLを使って
  作成してください。

どうか、宜しくお願いいたします。
965nobodyさん:02/03/26 14:50 ID:???
>作成してください。

宿題は自分でやりましょうね。
はい次の方。
966nobodyさん:02/03/26 14:51 ID:???
>作成してください。
ぉぃぉぃ
宿題?

素因数分解は遅くていいなら簡単だけど。
速くするのは数論の知識も必要になってくる。

grepみたいなのはものすごく簡単だけど。

教えない。
967のび太:02/03/26 16:00 ID:Kul7lxpG
perlでhtmlファイルを書き出し、それと同時に違うサーバーにFTP転送しています。
元ファイルの作成と転送そのものは問題なく動作してるのですが、
コピーしたファイルが元のファイルと比べて内容が変わってしまいます。
※内容が変わるというのは、ファイルが最後までコピーされない感じです(100行あったら90行までしか)
テーブルを使用してるのでレイアウトがグチャグチャに。。。

これはどのような原因が考えられるでしょうか?

ちなみに出力したファイルが全て書き込まれる前に転送しちゃってるのかな?と思い
転送の前にスリープとかやってみても結果は変わりませんでした。
968nobodyさん:02/03/26 16:08 ID:???
>>967
どらえもんに頼んで下さい
969ほげ:02/03/26 16:09 ID:gjNyJjgt
>>967
モールス信号で伝送してください
970nobodyさん:02/03/26 16:35 ID:???
>>969
むしろ手旗信号
971nobodyさん:02/03/26 18:13 ID:???
>>967
スリープしても意味無い。closeしなされ。
972nobodyさん:02/03/26 18:27 ID:???
>>964
$x = ファイル名
$y = 文字列
$cnt = 1;

open(IN,$x);
while(<IN>){
  if($_ =~ /$y/){ print "$cnt行目\n"; }
  $cnt++;
}
close(IN);
973nobodyさん:02/03/26 20:07 ID:???
>>964
$i = $in = $ARGV[0];

for($prime=2;$prime <= $in && $prime<1000000000;$prime++) {
 if ( ($i % $prime) == 0 ) {
  $power{$prime}++;
  $i = $i / $prime;
  $prime = 2;
 }
}
foreach(sort {$a<=>$b} keys %power) {
 $n = $power{$_};
 if ($n == 1) {
  $term = $_;
 } else {
  $term = "$_^".$n;
 }
 push(@result,$term);
}
print "$in = ",join(" * ",@result),"\n";
974nobodyさん:02/03/26 20:40 ID:???
課題とすると
授業で扱った関数使うとか、
前提が思うんだけどな。

>>972-973を提出しても誰かに作らせたとばれてしまう罠。
975973:02/03/26 22:02 ID:???
>>973
つっこみどころ満載でお届けしております。(藁
976nobodyさん:02/03/26 22:21 ID:???
>>980
次スレよろしく
977nobodyさん:02/03/26 22:34 ID:7ingtp1l
$b=$a-1;
print "a-1=$b";
というのを$bを使わないで
print join("", "a-1=", $a-1);
って書くのは普通ですか?もっと良い方法ありますか?
join使うとhtml出力するときとか、めちゃめちゃ分かりづらくなるんですが。
978nobodyさん:02/03/26 22:53 ID:???
>>977
printf "a-1=%f", $a - 1;
# or
print "a-1=${ \do{ $a - 1} }";
print "a-1=@{[ $a - 1]}"

好きな方法を試されよ。
979nobodyさん:02/03/26 22:54 ID:???
>>977
ふつーに
print "a-1=", $a-1;
とか。
980nobodyさん:02/03/26 22:57 ID:???
>977
なんで join でくっつけるの? つっくける意味がわからん。

print '$a-1= ',($a-1),"\n";
または
print "\$a-1= ${\( $a - 1 )}\n";
981nobodyさん:02/03/26 22:59 ID:???
>>977
もしくはprintfだな。
982977:02/03/26 23:03 ID:7ingtp1l
あれーそんなにいっぱい方法が..。
979さんと980さんのはピリオドじゃなくてカンマでいいんですか?
なんかdoってのが一番しっくりきそうなので使ってみます。
てか、今までずっとjoinでやってた..。人に見せなくてよかった。
ありがとうございます!
983nobodyさん:02/03/27 04:56 ID:???
ppm install Net-SMTP すると、
Error installing package 'Net-SMTP': Could not locate a PPD file for package Net-SMTP
ってエラーが出るんだけど、なにこれ?
プロキシ使ってないのに・・・

http://www.activestate.com/packages/
に Net-SMTP が見当たらないのと関係ある?
984983:02/03/27 05:02 ID:LXoBMXbo
ちなみに
ppm install Net-Ping
は成功しました。回線不調ともちがうようです。う〜ん・・・
985nobodyさん:02/03/27 05:07 ID:???
>>983
libnet.ppd
986983:02/03/27 05:34 ID:???
>>985さんどうもです。
ppm install libnetでインストールできました。

その後、
ttp://member.nifty.ne.jp/hippo2000/perltips/net/smtp.htm
>なおこのドキュメントではlibnetモジュールをインストールしたときに
>作成されるC:\Perl\html\lib\site\Net\SMTP.htmlを、

なんてのも見つけました。注意不足でしたか
987帝国 ◆9qoWuqvA :02/03/27 11:30 ID:BFIdDUdC
Perlで質問なんですが、
$folderで指定したフォルダ内に
フォームで受け取ったファイル名($filename)とパーミッション($permission)で、
空ファイルを生成する方法を教えてほしいんですが・・

もしかしてcgi-lib.plとか使いますか??
988nobodyさん:02/03/27 11:35 ID:???
>987
フォルダのパーミッションがきちんと設定されてればopen(MAKE,">$filename");でできる。
パーミッションはchmodで変えれ。
989帝国 ◆9qoWuqvA :02/03/27 11:58 ID:BFIdDUdC
>>988
ファイルの生成はうまく行きました。
でもパーミッションが設定されないんです。。

chmod($permission,"$folder/$filename");

でダメなんでしょうか?
990nobodyさん:02/03/27 12:09 ID:???
>989
パーミッションの数字はなににしてる?
991製作板で誘導した人:02/03/27 12:14 ID:???
$permissionの中身は何?
てかパーミッション設定するのに変数使う必要あるんだろうか・・・・
$file="\.\/$folder\/$filename";
chmod 666,$file;
とかじゃダメ?
992nobodyさん:02/03/27 12:26 ID:???
nobodyに0700にされる罠。
993帝国 ◆9qoWuqvA :02/03/27 12:39 ID:BFIdDUdC
パーミッションはフォームにいれた値。
だから変数に格納する必要が。。
994nobodyさん:02/03/27 12:44 ID:???
パーミッションは8進数で設定するのは別に罠ではないという罠。

立たぬなら 立つまでまとう Perlスレ
995nobodyさん:02/03/27 12:56 ID:???
 
次スレ作りましたー

【Perl】初心者コーナーPart11
http://pc.2ch.net/test/read.cgi/php/1017201229/l50
996nobodyさん:02/03/27 16:20 ID:Uw889VO5
996!
997nobodyさん:02/03/27 16:21 ID:???
997!
998nobodyさん:02/03/27 16:21 ID:???
998
999nobodyさん:02/03/27 16:21 ID:???
999!!!
1000nobodyさん:02/03/27 16:21 ID:???
1000get!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。