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

Perl コーディング初心者質問コーナー Part37

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/08/22 01:41ID:???
Perlのコーディングで困ってる人のスレです。
誰もが最初は初心者。
だからって、初心者に甘んじた質問の仕方は意味がないよ。

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

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

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

過去ログやお勧めサイトは >>2-10
071170404/09/26 19:01:06ID:???
>>708
2行ーッ!!!??
バチーリですた。
なちじょあ ◆yEbBEcuFOU マスター。

でも何やってるかびっくりするぐらいさっぱりです。
…<div align..> と、</div> 行を含んだものを出すには、どこを
どういじればよいのでしょうか。

現状--------------------------------------------
open(IN, "bin.html") || die "cannnot open!\n";
@text = <IN>;
$text = join('', @text);
$text =~ s|.*<div align="left">(.*?)</div>.*|$1|s;

print $text;
---------------------------------------------------
071270404/09/26 19:19:13ID:???
解読試みるス。マスター。

$text = join('', @text); #''という文字列で区切って挿入。1行に纏めたんスねマスター。
$text =~ s|.*<div align="left">(.*?)</div>.*|$1|s; # ~ <^-^;???
0713nobodyさん04/09/26 19:24:45ID:???
>>711-712
「出力されてるのは <div 〜>(かっこの中身ですか)</div> ?」と思いながら
ぐりぐりしてみましょう。

というか、正規表現って何なのさと思いながら激しく調べてみてください。
071470404/09/26 20:35:15ID:???
$text =~ s|.*<div align="left">(.*?)</div>.*|$1|s;

↑この行がさぱりです。

$text =~ s :$textの中身を置換する
| :or
.* :拡張子は問わない??

まず、なぜ 置換とそれ以降がorで分けられるのでしょうか??
071570404/09/26 20:51:59ID:???
>>マスター

.*<div align="left">(.*?)</div>.*

これの意味がなんとなくわかりますた!
拡張子全然関係ないですねm(_ _;)m

-----------------------------------------------------------------
任意の文字列の後に<div align="left">がきて(?不明)<div>がきて、
その後にまた任意の文字列
-----------------------------------------------------------------

で、あっていますか?
0716nobodyさん04/09/26 21:02:51ID:???
いい加減スレ違いだから
0717nobodyさん04/09/26 23:16:27ID:???
704を見て思ったんですけど、
外部ファイルの、改行の3つ目まで読み込む
にはどんな手順を踏めば出来ますか?
0718nobodyさん04/09/27 00:12:36ID:???
>>717
forでいいじゃん
071971704/09/27 00:18:45ID:???
>718 forでどうすればいいか分からないです。。。
0720nobodyさん04/09/27 00:38:54ID:???
>>719
ファイル操作,perlでググってこい
そして一回コード書いてから質問しろ
0721nobodyさん04/09/27 01:15:18ID:???
>>704
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_k08.htm
これを読みながら逆上がり10回出来ればわかると思うよ
0722nobodyさん04/09/27 01:23:16ID:???
あ、書き忘れていましたが、外部記録ファイルの中身は1000行くらいあるので、全部読み込むのは避けたいんです。@buf=<IN>以外で3行だけ読む方法はありませんか?
0723nobodyさん04/09/27 01:26:10ID:???
>>722
>>720
0724nobodyさん04/09/27 01:31:14ID:???
声優が岩男潤子で
サリー・セイント・フォードか。
これは偶然なんですか!
0725nobodyさん04/09/27 01:31:37ID:???
超誤爆
0726nobodyさん04/09/27 01:36:46ID:???
>>722
1000行なんかなにも気にする必要ないぞ?
ファイルサイズ 50k とかでしょ?
10万行とかいかない限り、気にしてもしょうがない。
0727nobodyさん04/09/27 04:34:02ID:77N/SlLL
はじめまして。
Perlのデータ受け取りに関しての質問です。

<input type="hidden" name="com" value="$in{com}">

の$in{com}部分に、改行を入れても、一般的に問題はないでしょうか?
htmlに

<input type="hidden" name="com" value="あ
い
う
え
お
">

のように記述しています。
あ\nい\nう\nえ\nお\n
のようにデータを受け取ってくれますでしょうか?
0728nobodyさん04/09/27 04:42:38ID:???
質問する前にやってみればいいじゃん
0729nobodyさん04/09/27 07:54:57ID:???
>>722
@buf[0..2] = <IN>;
0730nobodyさん04/09/27 08:54:55ID:???
>>722
while(<>) {
exit if $. > 3;
print;
}
がいいんじゃあない?
0731nobodyさん04/09/27 10:56:24ID:???
指定ディレクトリにあるファイル名一覧を配列に取得するのはどのように書けばいいでしょうか?
0732nobodyさん04/09/27 11:16:10ID:???
>>731
とりあえずこんなとこだろう

opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
@filenames = readdir(DIR);
closedir DIR;
0733nobodyさん04/09/27 12:20:51ID:???
>>732
ありがとうございます!
家に帰ったら試してみます!
0734nobodyさん04/09/27 15:47:48ID:???
CSVファイルを読み込んでそれをX件ずつ表示するプログラムを組みたいのですが
(Googleの次のX件とかみたいの)どういう風に組めばいいのかさっぱりわかりません。
参考になりそうなソースとかないでしょうか?
073572204/09/27 16:50:03ID:???
>723
出てきた出てきた^^;ググルって要らないサイトばっかマッチする糞検索鯖だと思ってました(ショボーン

>729>730
ものすごく簡潔で驚きました^^;;;
0736nobodyさん04/09/27 17:01:46ID:???
はぁ…
0737nobodyさん04/09/27 17:30:22ID:???
↓次の質問どうぞ
0738nobodyさん04/09/27 18:11:02ID:???
>>735
帰れ^^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;
0739nobodyさん04/09/27 18:48:57ID:???
質問させてください。
サブルーチンからハッシュを返す方法がどうにもわかりません。
いろんなサイトをググってみたのですが、実際に試しても上手くいませんでした。

---------------------------------------------
%hashA = ("aaa","0","bbb","1","ccc","2") ;
%hashB = &hash_return() ;

print %hashA ;
print "\n";
print %hashB ; #←渡ってないので何も表示されない・・・(´・ω・`) ショボーン

sub hash_return{
%hoge = ("aaa","0","bbb","1","ccc","2") ;
return \%hoge;
}
---------------------------------------------
0740nobodyさん04/09/27 19:02:52ID:???
sub hash_return{
%hoge = ("aaa","0","bbb","1","ccc","2") ;
return \%hoge; #★★★ この \ を取れクズ野郎 ★★★
}
0741nobodyさん04/09/27 19:06:26ID:???
\%hogeで返すんなら、受け側は$hashBになるわな
0742nobodyさん04/09/27 19:06:40ID:???
>738
うざい氏ね^^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;





:イラネ(・△・)
0743クズ野郎です04/09/27 19:07:51ID:???
おお?
それも試したはずなんですが・・・
ありがとうエロいおじちゃん! >>740
0744nobodyさん04/09/27 19:11:13ID:???
負荷計測とかしたいのですが、やり方とかあるのでしょうか?
教えて!偉い人!
0745nobodyさん04/09/27 19:32:56ID:j0XZIPtZ
無名配列の配列数を得るにはどうすればいいのでしょうか?
$#hoge だとエラーになります
0746nobodyさん04/09/27 20:14:02ID:???
>>745
$#$hoge
0747nobodyさん04/09/27 20:34:39ID:???
データのソートで悩んでます。

100の1
1000の2
100の3
500の1
1000の1
500の2
100の2

みたいに数字と日本語が混ざったデータを

100の1
100の2
100の3
500の1
500の2
1000の1
1000の2

にしたいのですが、<=> cmp どちらでやってもこのようになりません(当たり前なんですが…)。
どうやったらこんなソートが出来ますか?
0748nobodyさん04/09/27 20:44:35ID:kQMIC0Dw
foreach(@chinko){

 my $seieki;

 $seieki++;

print "$seieki";

}

とやると毎回、$seiekiが1になります。

 my $seieki;

の部分、一般的には、$seieki=0;とするのが普通でしょうか?
my〜は数値をリセットするためにも使用するものなのでしょうか?
詳しい方がいたら教えて下さい。
074974704/09/27 21:01:06ID:???
力技(?)で解決しちゃいました。
100の1
1000の2
を
100.1
1000.2
のように日本語の部分を小数点にしてソートしてあとで小数点を日本語に戻しました。

もっといい解決策がありましたら教えてちょ。
0750nobodyさん04/09/27 21:15:45ID:???
>>749
100の100と
100の2の大小関係は?
0751nobodyさん04/09/27 21:40:41ID:???
>>747
print
  map "$_->[2]\n",
  sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] }
  map [ /(\d+)/g, $_ ],
  qw(100の1 1000の2 100の3 500の1 1000の1 500の2 100の2);

>>748
my $count;
foreach (@data) { $count++; print $count }

print 1..@data;
0752nobodyさん04/09/27 22:58:40ID:???
>>744
ttp://www2u.biglobe.ne.jp/~MAS/perl/waza/index.html
0753nobodyさん04/09/28 05:45:24ID:pXXg1bBk
行数を減らすと処理速度は速くなるのでしょうか?
0754nobodyさん04/09/28 05:54:35ID:???
試せ。
0755nobodyさん04/09/28 06:00:08ID:???
ストップウォッチ持ったか?
真中のは時計のスイッチだぞ。間違えんな
0756nobodyさん04/09/28 06:09:05ID:B5P8Vfsa
おはようございます。
現在win2kにてActivePerl-5.8.4.810-MSWin32-x86.msi
を入れて使っています。

9桁以上の10進数正数(例えば36089479532304)を
16進数変換したいのですが
$a = sprintf "%X", $a;
のようにすると8桁までしか変換できず、オーバーフローした場合はFFFFFFFFとなってしまいます。

どうにか9桁以上を変換できないものかと色々検索したのですが
みつからず・・お力を貸していただけないでしょうか。
アドバイスいただければ幸いです。
075775604/09/28 08:06:42ID:???
Hex(36089479532304);

sub Hex {
my $val = shift @_;
my @hx = (0..9,'A'..'F');
my $hex;
while ($val > 15) {
$hex = $hx[$val % 16].$hex;
$val = ($val - ($val % 16)) / 16;
}
$hex = $hx[$val]. $hex;
return $hex;
}

先ほどの9桁以上の10進数→16進数変換はこのような形でなんとか
いけました。

そしてもう一つの問題が・・
巨大整数計算なのですが
3164311364の二乗 3164311364**
みたいなことをやると
1.00128664083395e+019
のような形になってしまいます。
use bigint;
や
use Math::BigInt;
も宣言してみたのですが結果は同じです。
きちんとした整数を出してやるにはどうしたらよいのでしょうか。
1.00128664083395e+019に関してはオーバーフローしている部分が
019にはみ出しているのかと思い、
19100128664083395としてみたのですが
これでは二乗の答えになっていません。
0758あぼーんNGNG
あぼーん
0759あぼーんNGNG
あぼーん
076075804/09/28 10:44:15ID:???
>>759
サンクス。
助かりました。
0761nobodyさん04/09/28 13:20:00ID:???
一般的にjcodeが一番負荷かかるのかな?
0762nobodyさん04/09/28 14:31:19ID:???
>>761
わたくしがその難問に答えてしんぜよう。

で、jcode と何を比べた場合??
0763nobodyさん04/09/28 17:00:49ID:???
>>757
「1.00128664083395e+019」とは、「1.00128664083395×10^19」の意味だ。
BigIntは使い方が間違っているのでは?
次のようにすると、「+10012866408339540496」と出力される。

use Math::BigInt;
my $x = Math::BigInt->new('3164311364');
print $x->bpow(2);
0764nobodyさん04/09/28 17:02:40ID:???
小数点での四捨五入の処理について質問です。
(該当件数 / 合計件数)をパーセントで表示しようと思っています。
例えば、合計3件の該当1件ならば33.33333%となります。

# 小数点第二位での四捨五入処理
$percent = ($count / $total * 100);
$percent = $percent * 10;
$percent = (int ($percent + 0.5) / 10);

こうすると、33.3%となりますが、これを3回繰り返しても合計100%にはなりません。
割り切れない数(無限小数でしたっけ?)を含むパーセンテージが存在する場合、
合計を100%にするということは不可能なのでしょうか。
076574704/09/28 17:40:11ID:???
>>750
おっと、ドツボに嵌るところでした。
指摘サンクス

>>751
完璧です。
すばらしい!
ありがとうございましたぁあ!
0766nobodyさん04/09/28 20:15:27ID:???
758-759
ってなにが有ったんだ?(w
0767nobodyさん04/09/28 20:52:52ID:???
googleのURLエンコードされた文字列をeucに変換したくて色々とやっているのですがうまくいきません
perl4とunicode.plとjcode.plを利用しています
(jcode.pmの利用許可が下りませんでした)

#!/usr/local/bin/perl
require './unicode.pl';
require './jcode.pl';
$googleurl = "%E5%AE%9F%E9%A8%93";
$teststr = "実験";

$googleurl =~ s/%[0-9A-F][0-9A-F]/pack("C",hex($1))/eg;
@googleuni = &unicode::UTF8toUTF16($googleurl);
$googleurl = &unicode::u2e(@googleuni);
print "$googleurl\n";

としているのですが何も出力されません
0768nobodyさん04/09/28 21:32:44ID:???
>>767
unicode.pl というのがコレの事なら
http://www.onicos.com/staff/iz/release/#unicodepl
Perl4 では動かない。
0769nobodyさん04/09/28 21:52:17ID:???
>>766
電話番号の数字をある規則で文字に置き換えるプログラムとかいう
お題だったんだけど、サンプルに電話番号のような文字列が含まれ
ていたのであぼーんされたようです。
077076704/09/28 22:22:13ID:???
うわ、すいませんperl自体は5.005_03の様です・・・
/usr/binが先にパス通っててそっちでperl -vしてました・・・
0771nobodyさん04/09/28 22:25:55ID:YPzWwkuA
コマンドラインの代用となるようなCGIスクリプト
を書こうと思ってます。
フォームから簡単なスクリプトを送るとその結果をブラウザに
返すようなプログラムです。

で、perlのスクリプト上でperlのスクリプトを評価するような
処理をしなければいけないのですが、どのように実現すればいいでしょうか?
0772nobodyさん04/09/28 22:48:54ID:???
eval
0773nobodyさん04/09/28 23:06:43ID:???
>>767
× $googleurl =~ s/%[0-9A-F][0-9A-F]/pack("C",hex($1))/eg;
○ $googleurl =~ s/%([0-9A-F][0-9A-F])/pack("C",hex($1))/eg;
0774nobodyさん04/09/28 23:13:04ID:???
掲示板で、読むときCGIによる記録ファイル読み込みではなくHTML出力にして、書き込む時だけCGIを使うようにしたら多少は負担が減るんですか?
一定時間に�@5人に1人が書くとき�A100人に1人が書くとき(チャット) で教えてください
0775機種依存文字を使う奴は氏のう04/09/28 23:18:25ID:???
1. 読むときCGIによる記録ファイル読み込みではなくHTML出力にして、書き込む時だけCGIを使う
2. 読むときCGIによる記録ファイル読み込みではなくHTML出力にして、書き込む時だけCGIを使う
0776nobodyさん04/09/29 00:22:34ID:???
フツーに考えれば掲示板だろうがチャットだろうがトータル負荷は減る。
だがしかし、ファイルが壊れるリスクを考慮すると、書き込み時の処理はシンプルにしたいところ。

よって掲示板には有効だが、ほいほい書き込みが発生するチャットには向かない。
0777774名無し04/09/29 00:39:19ID:???
>775
すみません
>776
ありがとうございました
0778nobodyさん04/09/29 03:57:33ID:6EqyI/FO
(1)変数へ代入する処理を減らす
(2)print "〜";文をなるべく1つにまとめる

みなさんはどちらを優先しますか?
またどちらの方が負荷は減るでしょうか?
詳しい方、意見お聞かせ下さい。
0779nobodyさん04/09/29 04:50:59ID:???
そんなことはどうでもいいので
アルゴリズムの改善を汁
0780nobodyさん04/09/29 09:15:35ID:???
>>779 に同意
CGIで一番負荷がかかるのはperl自身のプロセス起動
次はファイルの入出力
代入だのprintだのは誤差の範囲
0781nobodyさん04/09/29 09:27:47ID:???
>>780
プロセス起動なんて軽くでけるん?
mod_perl使えってのは無しな(w

ファイル入出力は同意。
0782nobodyさん04/09/29 09:51:57ID:???
いや、ファイル入出力はどのように入出力してるか見れば、あまり軽くは出来ないだろう。
と言うか、ファイル入出力を見直して軽く出来たら書いた人間が糞。
と言うわけで>>781 mod_perl使えw
0783nobodyさん04/09/29 10:24:02ID:???
mod_perlも扱いが難しい。
掲示板程度のスクリプトでも長いこと動かしていると、プロセスの
メモリ占有量が馬鹿みたいに膨れ上がる。

グローバル変数はほとんど使わないように組んでるし、
my で宣言したものはスコープを外れた時点で解放して欲しいんだけど、
ちゃんと領域を回収してくれてないのかな。
そういえばPerlのGCって意識したことなかった。
0784nobodyさん04/09/29 10:24:05ID:???
世の中の全ての
全てのPerlで書かれたCGIが
use strictしてあって
動いてたなら
世界はもっと平和だったのに
0785nobodyさん04/09/29 10:26:47ID:???
>>781
肥え太った 5.6.x 以降を使わず 5.005_0x を使うと少しは
軽くなるかも知れない。Perl4 スタイルな小規模スクリプト
がメインなら、無闇に Apache::PerlRun で走らせるよりも
CGI にした方が軽い場合もある。

まぁ全てはケースバイケースだから、Apache Bench で
計るなりして最適な選択を。
0786nobodyさん04/09/29 10:30:04ID:???
Apache BenchってDoS攻撃ツールじゃなかったの?
0787nobodyさん04/09/29 10:49:25ID:???
>>783
PerlのGCは中での再利用はするけどOSには返さないって昔聞いた気が
する。ほんとかどうか知らんけど......
0788nobodyさん04/09/29 11:06:14ID:???
>>787
Perlに限らず大抵の処理系はGCしてもプロセスが終了するまで
メモリをOSに返さないと思われ。
0789nobodyさん04/09/29 11:09:44ID:???
例えば掲示板で記事を表示する時に

while(<TAKESI>){

($a,$b,$c,$d,$e,$f,$g,$h,$i,$k)=split(〜);

いろいろ表示

}

こういう処理がありますが
my($a,$b,$c,$d,$e,$f,$g,$h,$i,$k)=split(〜);
このようにmyを付けた方が処理は早くなるのですか?
みなさんは付けてますか?
079077104/09/29 11:11:05ID:2geLnUuH
>>772

ありがとうございます。
evalで検索かけたら
http://oshiete1.goo.ne.jp/kotaeru.php3?q=908814
というページも見つかりました。
0791nobodyさん04/09/29 11:18:50ID:???
>>789
http://www5a.biglobe.ne.jp/~n_rieko/perl/9.htm#9-3
0792nobodyさん04/09/29 11:22:47ID:???
print "あいうえお".($a-6)."かきくけこ";

こういうのってperl4でも使えるのかな
使ったら出来ちゃってるけど
0793nobodyさん04/09/29 12:26:13ID:???
>>783
mod_perl の問題じゃないよ
0794nobodyさん04/09/29 13:11:59ID:???
>>791
は?myはlocalより早いってとこ?
シンボルテーブルに登録されないから、グローバル変数や
local変数より早いって理解でいいでつか?
0795nobodyさん04/09/29 13:45:38ID:???
localはブロックを出入りするときに元の値を退避して戻す
処理が入るのでさらに遅いのです。
0796nobodyさん04/09/29 14:05:03ID:???
>>794-795
ひょっとしてここの人達って、ループ中のサブルーチン呼び出しを
インライン展開しなくちゃいけないくらい激しくチューニングしてるわけ?


>>793
mod_perl の問題じゃないんだとしたら、Apache::Registryモジュールのせい?
0797nobodyさん04/09/29 14:15:59ID:???
頭のいい漏れはぜんーぶグローバルで書く。それが一番速い。
0798nobodyさん04/09/29 14:36:10ID:???
>>797
ファイルの先頭でmyしてグローバルっぽく使う方が微妙に速いんじゃない?
0799nobodyさん04/09/29 14:51:18ID:???
※※※↓次の質問ドゾー※※※
0800nobodyさん04/09/29 16:30:57ID:???
なんか面白いことないんかか?とも思われるのでとりあえずこんなことを。
Perlのコンパイラって何言語で書かれてるの?おまら知ってる?
そもそもどうやってプログラムがうごくのかよくわかあんよな。
CGIいくら組んでも根本的な部分をしらないとだめだな。

ところでCSV形式って区切り子がカンマでしょ?まあ名前の通りだけど。
でも改行も区切り子になるの?

a,s,d
s,d,f

↑これとかってdとsがくっついたりしないの?まあPerlでは
open CSV "hoge.csv";
while ( <CSV> ){
chomp;
printf "大地%s 空%s 海%s <br>\n" ,split/,/;
}

ってchomp意味内やン家!なんか久しぶりにperlのコーディングでもしよ尾も運だすので
カメハネml?
0801nobodyさん04/09/29 17:07:47ID:???
※※※↓>>1 をよく読んでから次の質問ドゾー※※※
0802nobodyさん04/09/29 23:53:39ID:???
>>800
C
http://www.google.co.jp/search?q=perlembed&sourceid=firefox&hl=ja-JP&start=0&start=0&ie=utf-8&oe=utf-8
http://rcl.hp.infoseek.co.jp/perl.html
0803nobodyさん04/09/30 10:21:11ID:???
オブジェクト指向は出来るだけ使ったほうがいいんですか?
0804nobodyさん04/09/30 10:30:29ID:???
好きにしろよ
0805nobodyさん04/09/30 12:12:21ID:???
質問です。
テキストフィールドに書かれた文字をファイルに保存しようと思っているのですが、
作成されたファイルを開くと、ファイルの先頭部分にNULL文字がセットされてしまいます。

$text = $FORM{"text"};
$text =~ s/\r\n|\r|\n/\n/g;
open (DATA, ">>$filename");
flock (DATA, 2);
seek (DATA, 0, 0);
print DATA $text;
truncate (DATA, tell (DATA));
close (DATA);
chmod (0666, $filename);

環境は ActivePerl5.6.1 IE6.0SP1 AN HTTP Daemon 1.42k でテストしていて、
ローカルですと正常にファイル保存がされるのですが、鯖に上げるとファイル先頭部分にNULL文字がセットされてしまいます。
どなたか考えられる原因をご存知の方はいないでしょうか。
0806nobodyさん04/09/30 12:40:43ID:???
>>805
ご存知ではないので一般論で。

まず$textにNULL文字が入っていないか切り分けよう。
printする前に、$text =~ s/\0/<null>/g; とかしとけば
もしはじめからNULLが入っていれば見えるようになるはず。

あともう1つあやしいのは >> で開くとO_APPENDになるので、
OSによるかもしれないがどこにシークしていても必ず書き込み
はファイルの末尾からになってしまう。その辺の問題かも
しれない。

はじめから'>'で開けばその問題はないが、省略してるが実は
読み出しもやってるとするとその手は使えないので、長さ0に
truncateしてからprintするか、sysopen使って

sysopen(DATA, $filename, O_RDWR|O_CREAT) or die;

みたいにすれば回避できると思う。

0807nobodyさん04/09/30 12:54:35ID:???
>>でopenしてseek(DATA, 0, 0)するのは無駄手間にしか見えないが。
080880504/09/30 13:12:09ID:???
返答ありがとうございます。
補足になりますが、テキストフィールドの内容をファイルに新規保存するだけのものでして、読み出しは行いません。
また、ローカルでテストする際のOSはWin2000Proです。
$text =~ s/\0/<null>/g;を試してみたところ、<null>という文字列は入りませんでしたので、入力内容にNULL文字はないようです。
>>でopenしてseekは無意味と言うことで、seekを外してみましたが、結果は変わりませんでした。
また、>でopenしてみたところ、正常に動作しました。

>>806,807氏、ヒントをありがとうございました。
0809なちじょあ ◆yEbBEcuFOU 04/09/30 14:34:52ID:???
( ● ・3・ ● ) エェー XREAでは広告入ると空行入るけど違うかNA
0810なちじょあ ◆yEbBEcuFOU 04/09/30 14:35:18ID:???
( ● ・3・ ● ) エェー あ、解決してたスマSO
■ このスレッドは過去ログ倉庫に格納されています