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

【Perl】初心者コーナー Part14

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/07/18 16:34ID:jemWJhH3
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

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

CGIだけど、なんか質問ある? Part 6 (その2)
http://pc.2ch.net/test/read.cgi/php/1025930486/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0548nobodyさん02/07/29 20:54ID:???
>547
どうやって$FORM{'cmd'}に入れてるんだ?
勝手に入るとか思ってたりはしないよな?
まさかそこまで馬鹿じゃないよな?
夏とは言えそこまで馬鹿はいないと信じたいな。
0549nobodyさん02/07/29 21:21ID:zYJTXqe4
perlで書いたcgiの中でファイルを作成すると、
所有者がapacheとなります。この所有者は好きなのに変えられないのですか?
055047402/07/29 22:10ID:???
>>475
マニュアルはperldocやweb等いろいろと見てみたのですが、全然ロックに関する
記述が無いんです。(T_T
しかし、dbと名が付いているくらいだからロックくらいはしてくれるだろう、
ということでとりあえずsdbmでやってみようかな、って思ってます。
でも微妙に気になる。(w
0551nobodyさん02/07/29 22:15ID:???
>>547

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
local(@pairs) = split(/&/,$buffer);
foreach $pair(@pairs){
local($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([\dA-Z]{2})/pack("H2", $1 )/eg;
$FORM{$name} = $value;
}
0552nobodyさん02/07/29 22:45ID:???
>>545
振込先でも晒しとけば
0553nobodyさん02/07/29 22:45ID:7AOu/QAw
$right =~ s/</&lt;/g;
をウマーク変えて
□□□(文字列)→<font color="#ff0000">★</font>
な感じに出来ないでしょうか?
0554nobodyさん02/07/29 22:47ID:???
出来るよ。
0555nobodyさん02/07/29 22:50ID:7AOu/QAw
>>554
やり方を教えて頂ければこちら側としては非常にありがたいのですが…
0556nobodyさん02/07/29 22:52ID:???
>>545
漏れに金くれるんならいい案提示してやるぞ!
print ".";
0557nobodyさん02/07/29 22:53ID:???
>>541だった。すまん。
0558nobodyさん02/07/29 22:54ID:???
>>555

$right =~ s/□□□/<font color="#ff0000">★</font>/g;
0559nobodyさん02/07/29 22:55ID:???
>558
いんたーなるさーばーえらー
0560nobodyさん02/07/29 22:57ID:7AOu/QAw
>>555
ありがとうごだいます。
試してみます。
056155502/07/29 22:58ID:7AOu/QAw
>>559
だめなんですか?

↑のは>>555じゃなくて>>558だ
0562nobodyさん02/07/29 22:59ID:om5W19We
Perlでプログラミングを勉強してます。
本はリャマ第2版、 Vine2.5+Bashでしゅ。
第三章の問題1ですが、要は、キーボードから
111
222
333
(C-d)←EOFを入れる。
と入力したら、
333
222
111
と表示するプログラムを書け、という主旨だと思います。
解答は、
print "Enter the list of strings\n";
@list = <STDIN>;
@reverselist = reverse @list;
print @reverselist;
となってます。オイラの答は、
@strigns = <STDIN>;
@result = reverse(@strings);
print "@result";
です。変数名と1行目は本論でないので置いとくとして、問題はこれを実行すると、
333
222
111
と2行目以下、行頭にスペースが入ってしまうことです。
違いは、print のトコで、" " で括るか、括らないかの違いなんすが、
この例では、" " はどのような役目を果たしているのでざんしょ?
それと、reverseの引数はカッコ無しでも有りでも変わらないようなのですが、
あっても無くてもいいのでしょうか?
よろしこおながいします。
0563nobodyさん02/07/29 23:06ID:???
>>561
わりぃ。
間違えてた。

$right =~ s/□□□/<font color="\#ff0000">★<\/font>/g;
056455502/07/29 23:08ID:7AOu/QAw
>>563
再度トゥライしてみます。
056555502/07/29 23:19ID:7AOu/QAw
>>563
出来ました。
本当にありがとうごだいました。
0566nobodyさん02/07/29 23:20ID:???
>>562
と言うか、配列を ” で囲んでprintfに投げると
デフォルトの区切り子を挿入しちゃうんですよ。
$. と $” だったかを弄って見れば分かる筈

@list = qw(hoge foo bar);
print @list;
print "\n";
print "@list";

0567nobodyさん02/07/29 23:23ID:???
>>562

"" は普通の文字列の書き方。変数展開とか \ のエスケープとか有りの。配列
変数も展開してくれるそうで。

3.7 配列を文字列中に展開する
「同様に、配列変数から…間にスペースをはさんで、順番に展開されます」

だそうです。実際には、特殊変数 $" の値で区切られるはず。"" で囲まずに
print する場合には、$, (デフォルトは空文字列) で区切られます。

> それと、reverseの引数はカッコ無しでも有りでも変わらないようなのですが、
> あっても無くてもいいのでしょうか?

この場合には無くてもいいけど、必要な場合もあるらしい。この辺は、漏れも
よく分らない。考えるのが面倒なので、大抵 () を付けるようにしてるけど。
056856202/07/30 00:12ID:hgHyxKDS
>>566-567
なるほど。
$" と $, はまだ勉強していないのでよく分からないけど、
" " の有無による違いは何となく分かりました。
引数のカッコ、とりあえず付けとけば問題無し、ということで
原則かっこ付きで逝きます。
どうもありがとうございました。
0569nobodyさん02/07/30 10:04ID:???
記事noを取り出したいとき
@dataに

2<>名無しさん<>mail@***.com<>http://www.***.com/<;>てすと<>てすと<>
1<>名無しさん<>mail@***.com<>http://www.***.com/<;>てすと<>てすと<>

の2行がはいっていて1行目の「2」だけを取り出したいのですが

$no = (split(/<>/,$data[0])[0]);

とやってもできませんでした。どうやればいいのでしょうか?
0570nobodyさん02/07/30 10:07ID:nD+VMZzM
http://www.ruitomo.com/~gulab/index.html
ここでスレを調べなされ
0571nobodyさん02/07/30 10:16ID:???
perlで書いたcgiの中でファイルを作成すると、
所有者がapacheとなります。この所有者は好きなのに変えられないのですか?
0572nobodyさん02/07/30 10:48ID:???
>>571
変えられない。
0573nobodyさん02/07/30 10:56ID:???
配列から別の配列に同じ物を一気にぶち込みたいときは、
@new = @old;
でいいですか?
試したら一応出来ましたけど。
0574nobodyさん02/07/30 11:22ID:???
$hoge =~ s/\Q$pair\E/<b>$pair<\/b>/g;
これの \Q \E の意味が良くわからないです。
0575nobodyさん02/07/30 11:30ID:???
>>571
基本的に変えられませんが、mo-musu だったら変更可です。

やり方:
  `chown mo-musu.mo-musu filename`;
0576nobodyさん02/07/30 11:50ID:???
全角英数字を半角英数字に変えたいので↓にあるのを引用して
www.kiwi-us.com/~mizusawa//penguin/DATA/dlcount/dlcount.cgi?file=macwwwsrch3097_fol.zip
&jcode'convert(*word, "sjis");
こうやったんですけどうまくいかないです。
0577nobodyさん02/07/30 11:58ID:???
>>576
&jcode'convert(*word, "sjis", "", "mo-musu");
0578nobodyさん02/07/30 12:27ID:???
>>576
perlメモ見れ
ttp://www.din.or.jp/~ohzaki/perl.htm#JP_Z2H
0579nobodyさん02/07/30 12:43ID:???
>>575=577
氏ね氏ね氏ね氏ね氏ね
058057602/07/30 13:37ID:???
perlで日本語を使う時の注意がわかってきました。
で、今は普通にSJISでperlを書いています。
>perl スクリプトを EUC-JP で書き, 漢字コードが EUC-JP である日本語を処理するというのが、
>perl で日本語を扱うときに一番問題が起きにくい方法です。
という事はスクリプトを保存する時のコードをEUCに変更した方がいいんでしょうか。
FORMのデコードも全部EUCに変換しなきゃいけないですよね。
0581nobodyさん02/07/30 13:51ID:???
>>580
調子に乗るな! >>1を読め!
058257602/07/30 13:59ID:???
す、すいません!調子に乗ってしまいました!!
0583nobodyさん02/07/30 14:39ID:???
>>582

キエロ

二度と来るなよ

来たらおまえのサイト荒らすべ

0584nobodyさん02/07/30 19:11ID:???
掲示板で

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

と長い半角文字を入力すると記事を表示する枠が勝手に広がってしまいます。
どうすれば枠の幅はそのままで記事は改行されてきれいに収まるように出来るでしょうか?
0585nobodyさん02/07/30 19:22ID:???
>>584
cssつかえ
0586 ◆FANY.jpg 02/07/30 20:39ID:???
画像ファイル(*.jpg)を開くと、画像毎に見た人の数をカウント
したり、見た人のホスト名を記録するフリーのPerlを探してます。
どこかにありませんか?教えてください。

プログラムは組めませんが、設置する基本的な知識はあります。
よろしくお願いします。
0587nobodyさん02/07/30 21:00ID:???
>プログラムは組めませんが、設置する基本的な知識はあります。

だけど検索することはできないんだね
0588nobodyさん02/07/30 21:11ID:w4X2IPfe
@INCにパスを追加する方法教えてください・・・・
0589nobodyさん02/07/30 21:24ID:???
#!/usr/bin/perl -I
0590nobodyさん02/07/30 22:02ID:???
>>586

スレ違い
0591 ◆FANY.jpg 02/07/30 22:51ID:???
>>587
検索してるんだけど、見つからないんだな。
カウントするヤシはイパーイあるんだけど、ログを残すのが無い。

>>590
どこで聞けばいいのだ?
プログラム板は初めてで、初心者の文字があったもんで・・・
0592nobodyさん02/07/30 23:08ID:???
my の事で質問です。

my $hoge;
my $hoge2;
と
my $hoge, $hoge2;
はどう違うんですか?
検索もして自分でも試しましたが答えを見つけることが出来ませんでした。
ご教授お願いします。
0593nobodyさん02/07/30 23:56ID:???
>>592
って、全然違うじゃん。
> my $hoge, $hoge2;
myが効いてるのは$hogeだけ。my( $hoge, $hoge2);で上と同じ。
059459202/07/31 00:59ID:???
>>593
ありがとうございました。
523=Perlの神!
0595nobodyさん02/07/31 01:01ID:???
>>523

523 名前:nobodyさん 投稿日:2002/07/28(日) 21:18 ID:???
クソの分際で生意気なチンポ猿だな全く
ムカつくぜ
0596nobodyさん02/07/31 01:04ID:???
>>594
感謝にギャグってくれるとはなかなか、、
0597nobodyさん02/07/31 01:24ID:S7Hc+7gV
お知恵を貸してください。

@X = ("A","B","C","D")

があって、BとCの間にEをつっこむ何かよい手はないでしょうか。
結果的に、

@X = ("A","B","E","C","D")

を作りたいのです。よろしくお願いいたします。
0598nobodyさん02/07/31 01:39ID:I1Mr+tD0
splice
0599nobodyさん02/07/31 01:40ID:???
>>597
@X = ("A","B","C","D");
splice(@X, 2, 0, 'mo-musu');
0600nobodyさん02/07/31 02:54ID:???
use LWP::Simple;
これ以外でWEBページを取得する方法はありますか?
現在借りているサーバーにはモジュールがありやがりやせん。
0601nobodyさん02/07/31 03:06ID:???
>>600
面倒なのでコピペ
お前これみて分るか?
use Socket;
$r1=shift(@ARGV);
$html=shift(@ARGV);
$port = 80;
$host = "$r1";
$filename = "$html";
$ipaddress = inet_aton("$host");
$address = pack_sockaddr_in($port,$ipaddress);
socket(SOCKET,2,1,0);
connect(SOCKET,$address);
select(SOCKET);
$ |= 1;
select(STDOUT);
print SOCKET "GET $filename HTTP/1.0\r\n";
print SOCKET "HOST: $host";
print SOCKET "User-Agent: Q51-A";
print SOCKET "Accept-Encoding: gzip";
print SOCKET "\r\n\n";
while(<SOCKET>){
print $_;
}
0602nobodyさん02/07/31 03:13ID:???
暇だしいいか、、
LWPは標準モジュールじゃないです。
ActivePerlとかLinuxのディストリには入ってるがな。
ラクダ本くらいは買え。6章にソケット例が書いてある。
0603nobodyさん02/07/31 03:30ID:y5qu4VWq
引数の文字列の長さを求めたい時、PHP4では"strlen()"関数にて

$a = "abcd";
$a = strlen($a);

echo ("$a\n");

という風な記述をすると思うのですが、これをperlに置き換えたい場合はどの様にすれば宜しいのでしょうか?
0604nobodyさん02/07/31 03:35ID:???
現在perlで quota の設定ができるものを作成中なのですが、
通常であればシェルで

edquota ユーザー名 (Enter)

でエディタが起動して

Disk quotas for user okada (uid xxx):
Filesystem blocks soft hard inodes soft hard
/dev/hdax xxx xxxx xxxx xx x x

上記のテンプレートを編集する事になるのですが、
これを Perl のスクリプトで変更することはできないのでしょうか?

exp) perl ./edquota.pl ユーザー名 blocks値 soft値 hard値 inodes値 soft値 hard値・・

Linux Slackware8.0
Perl5.6 を使用しております。

それでは宜しくお願いいたします。
0605上げたらいかんぜよ02/07/31 03:37ID:???
>>603
length関数

$hen="tinko";
$kuso=length $hen;
print $kuso;
0606nobodyさん02/07/31 03:40ID:???
>>604
マルチ近視
それでは宜しくお願いいたします。ってのがネタっぽいからなぁ〜
文章書き換えてプログラム板に逝け
0607nobodyさん02/07/31 07:53ID:y2pKIymG
>605
示して頂いた例通り(変数名は別のものですがw)試して、巧く機能させる事が出来ました。お蔭さまで助かりました。

何分、糞imodeに対して別途"Content-Length"値を与えなならんと聞いたものですから‥
0608nobodyさん02/07/31 07:55ID:???
んげ、ageたらアカンかったんでしたね‥
0609nobodyさん02/07/31 08:45ID:???
>>585

CSSでどうやってやるのですか?
0610nobodyさん02/07/31 08:49ID:???
>609
CSSスレで聞け。
0611nobodyさん02/07/31 09:13ID:phubboAl
http://www.afz.jp/%7En_mattun/2ch/swf/R3_temp.html

これを見れない原因として、何が考えられますか?
0612nobodyさん02/07/31 09:24ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0613nobodyさん02/07/31 09:35ID:qpj2RbUE
サブルーチンファイルの書き方と
本体からの呼び方の
決まりが書いてあるページが見つかりません。
教えて下さい。
061461302/07/31 10:35ID:qpj2RbUE
補足
同じファイルにサブルーチンを書いて呼ぶ方法はわかります
別のファイルにサブルーチンを書いて呼び出したいんです
0615nobodyさん?02/07/31 11:23ID:???
>>613
require で読み込むのだ。
読み込んだ後は、普通にサブルーチン呼び出すと。。
0616nobodyさん02/07/31 11:51ID:UyjmARAz
誰か教えてください
ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl.ppd
でwin2000にmod_perlを組み込みたいのですが、、
Error installing package 'http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl.ppd'
: Could not locate a PPD file for package http://theoryx5.uwinnipeg.ca/ppmpackag
es/mod_perl.ppd
このようなエラーが出ます。URL移動したのでしょうか?
0617nobodyさん02/07/31 11:58ID:???
>616
サーバがメンテ中とかやないの?
0618nobodyさん02/07/31 12:32ID:???
>>613
詳細は省き、必要最低限のみ。
サブルーチンの書かれたファイルをSub.pmとする。
その中のサブルーチンをsubとする。

本体の頭に
use Sub qw(sub);
呼ぶときは単に
sub();

サブルーチンファイルの頭に
package Sub;
use Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(sub);

とやって、あとは普通に定義する。
sub {}

0619nobodyさん02/07/31 12:39ID:???
>>592
>> my $hoge, $hoge2;

ラクダ本216より
この演算子(my)はコンマよりも優先順位が高いので、2個以上の変数を指定する場合
には、変数の並びをカッコで囲まなければならない。
0620nobodyさん02/07/31 12:42ID:???
>>588

use lib 'pass';
で、@INCの頭にpassが入る。
062161302/07/31 12:46ID:???
>>615様
で、できますた!

test_sub.cgiの記述

sub test{print"てすと";}
1;


test.cgiの記述
#!/usr/bin/perl

require './test_sub.cgi';

&test;

>>618様
更に高度な技のご伝授で感激です。
これから解析して勉強します。

お二神様ともありがとうございます。
0622nobodyさん02/07/31 13:27ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

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

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0623nobodyさん02/07/31 13:31ID:???
2重書き込みの判定で

if($tmp[2] eq $name && $tmp[6] eq $comment) {&error("二重投稿はできません");}

とやったのですが反応しないため

if(($tmp[2] == $name) && ($tmp[6] == $comment)) {&error("二重投稿はできません");}

とやったらできるようになりました。

しかし他の人のコードを見ると前者のようにしてあるのですが
なぜか自分のでは反応しませんでした。

原因がなにかわからないでしょうか?
0624nobodyさん02/07/31 13:31ID:PJX78SBC
$tmp[2]には一番最近書きこまれた記事の投稿者名が、
$tmp[6]には1番最近書きこまれた記事のコメントが格納されています。

ログファイルに書きこむ際は

my($tmp) = "$no<>$subject<>$name<>$email<>$url<>$time<>$comment\n";

open(DATA,">$logfile") || exit;

unshift(@data,$tmp); print DATA @data; close(DATA);

のようにしています。

一番最近書きこまれた記事の投稿者名やコメント情報は

open(DATA,"$logfile") || exit;
my(@data) = <DATA>; close(DATA);

my(@tmp) = split(/<>/,$data[0]);

のようにして取り出しています。
0625nobodyさん02/07/31 13:34ID:???
>624
\nの扱いがどうなってるかだな。
ログの保存を
my($tmp) = "$no<>$subject<>$name<>$email<>$url<>$time<>$comment<>\n";
に変えて、上の方法にしてみたら?
0626nobodyさん02/07/31 13:35ID:???
>>623
たとえば、$tmp[2]の値が0で、$nameの値が空だったらありえーる!
0627nobodyさん02/07/31 13:39ID:???
ログファイル読み込むときに末尾の改行とってないから$commentとは等しくない。
0628nobodyさん02/07/31 14:05ID:???
HTML::Templateのループ処理をネストするとき、

$template->param('ROW',[
   { name => 'Bobby',
    nicknames => [
       { name => 'the big bad wolf' },
       { name => 'He-Man' },
             ],
    },
  ],
);

みたいな処理だと、変数の数が必然的に決まってしまうんで
配列を使って、ネストしたnicknamesに入れるハッシュの数を自由に操作したいんですけど、
0629nobodyさん02/07/31 14:06ID:???
my @name = qw('the big bad wolf' , 'He-Man'........);
while (@name) {
 my %row_data;
 $row_data{'NAME'} = shift @name;
 push(@nicknames, \%row_data);
}

 $name = 'Bobby';
 $nickname = 'He-Man';
 my %row_data;
 $row_data{'NAME'} = $name;
 $row_data{'NICKNAME'} = $nickname;
 push(@loop_data, \%row_data);

まではいいんですが、@loop_dataに@nicknamesを入れるにはどうすればいいんですか?
push(@loop_data, \@nicknames); などではダメですが
それとも他に配列をネストするための何らかの方法が?
0630nobodyさん02/07/31 14:12ID:PJX78SBC
if($tmp[2] eq $name && $tmp[6] eq $comment) {&error("二重投稿はできません");}

my($tmp) = "$no<>$subject<>$name<>$email<>$url<>$time<>$comment<>\n";

こうやってみたんですがだめでした。

0631nobodyさん02/07/31 14:55ID:???
>>630
>>627読んだ?
0632nobodyさん02/07/31 15:11ID:PJX78SBC
それは

my(@tmp) = split(/<>/,$data[0]);
$tmp[6] =~ s/\n//;
if($tmp[2] eq $name && $tmp[6] eq $comment) {&error("二重投稿はできません");}

というようにしろということでしょうか?


0633nobodyさん02/07/31 15:22ID:PJX78SBC
やってみたのですがうまくいきませんでした
0634nobodyさん02/07/31 15:33ID:???
もうチョイ頭使えって
あんたの財布の中身は他人には解らん
変数の中全部吐き出してみろよ
0635comeoneverybody02/07/31 16:20ID:JJGI7Csk
単純なところだと思うのですが、

添付ファイル付きメールををセンドメールで送るんですが、
@filesの部分に添付ファイルを入れれます
stdio::sendmail(\%header, $body, $html_body, 0, @files);

こうするとうまくいかないのですが、プログラムの別の部分で
@filesの中身を吐き出してやって、コピペしてやるとなぜかうまくいきます。
stdio::sendmail(\%header, $body, $html_body, 0, '../../aaa.txt',);

すごく単純なことだと思うのですが、なにか解決のヒントください。
おながします。
0636nobodyさん02/07/31 16:24ID:???
>>635
@filesだと配列の数。
0637nobodyさん02/07/31 16:38ID:PJX78SBC
$data[0]の中身は

1<>書き込みテスト<>名無しさん<>***@***.com<>http://www.***.com/<;>2002/07/31 15:14:19 (Wed)<>書きこみテスト<>

です
0638comeoneverybody02/07/31 16:47ID:JJGI7Csk
>>636 ありがとうございます。

すると配列そのものを羅列させるには
stdio::sendmail(\%header, $body, $html_body, 0, "@files");
とするべきということですか?
0639nobodyさん02/07/31 16:53ID:???
このスレを見ようとすると

http://server.maido3.com/

へ飛ばされるんだけど俺だけ・・?
0640nobodyさん02/07/31 17:05ID:???
>>638
web powerのstdio.plライブラリーですか。
sendmailのパスが無いようなきがするけど。
その@fileの内容が知りたい。
0641nobodyさん02/07/31 17:06ID:???
http://www.afz.jp/~n_mattun/2ch/swf/R3_temp.swf?inputStr=%93c%91%E3%82%DC%82%B3%82%B5%82%A0%82%CE%82%CE%82%CE%82%CE%82%CE%82%CE%82%CE%81%5B
0642comeoneverybody02/07/31 17:13ID:JJGI7Csk
>>640
>web powerのstdio.plライブラリーですか。
あ、そうです。
sendmailのパスはとうの前に記述してます。
ですから、添付されて無いメールは届きますし、
@filesの中身を吐き出してコピペするとちゃんと添付されて届くんですよ。
中身は
'../aa/1234.txt', '../aa/1235.txt', '../aa/1236.txt',
こんな感じです。
0643nobodyさん02/07/31 17:33ID:9/C2v2FP
掲示板で、データをテキストファイルにしてます。
タグが禁止なので<,>は<と>に直してデータに保存しています。
で、投稿内容を表示する時は、
$naiyou =~ s/<br>/<br>/g;
こういう感じで改行部分だけ直して表示してます。
で、投稿内容を修正する機能があって<textarea>$hoge</textarea>
という感じで表示して入力してもらいます。
この時、逆に文字の中に<br>が入ってしまって変です。
なので今度は<br>を改行コードに戻して表示しなきゃいけません。
改行コードはOSによって違うので
$naiyou =~ s/<br>/\n/g; # unix
$naiyou =~ s/<br>/\r\n/g; # win
$naiyou =~ s/<br>/\r/g; # mac
という風にOSによって書き分けないといけないですよね?
OSはジャバスクリプトで分ければいいってことでしょうか。
0644nobodyさん02/07/31 17:34ID:???
http://www-power.net/cgi/other/library/stdio/stdio.pl

これかな、何か間違えてるんじゃ無いの?
(\%header, $body, $html_body, 0, '../aa/1234.txt','../aa/1235.txt', '../aa/1236.txt');

こうしたらどうなるの?
0645nobodyさん02/07/31 17:42ID:???
>>643
unixだけでいいよ。
0646nobodyさん02/07/31 17:53ID:???
>>643
なぜどのOSでも未知のサーバのテキストが改行して読めてるか分かる?
064748002/07/31 18:12ID:???
>>491 なんだ ◆JAPH9PWAはgunzipの弟子だったのか?
「コテハンの騎士は一人残らず皆殺しだ(´・ω・`)」(←SWのみすぎ)
ム板Perl6スレでの君の活躍は見事だ。放置プレイマンセーだな(少尿
>>490
あぁ俺英語読めんからいまだにコンパイルできん。
だいたいnmakeうってもできんぞ。詳しく教えろ。
■ このスレッドは過去ログ倉庫に格納されています