重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

perl超初心者で、初歩的な質問です。
辞書データから不必要な文字を取ろうと思っています。
ところが最初のファイルの入出力から行き詰っています。
処理が終わると空ファイルができます。
下が使いたい辞書データです。
-------------------
word,trans,exp,level,memory,modify,pron,filelink
"さらさら","(adj-na,adv,n,vs) (1) rustling/murmuring/(2) fluently/(3) silky (hair)/(P)","",0,0,0,""
"さらば","(conj,int) farewell","",0,0,0,""
"さん","(suf) Mr or Mrs/(P)","",0,0,0,""
"さーたーあんだぎー","(n) type of Okinawan doughnut (donut)","",0,0,0,""
"さ来週 [さらいしゅう]","(n-adv,n-t) week after next","",0,0,0,""
"さ迷う [さまよう]","(v5u) to loiter/to putter/to prowl/to wander about/to roam about/to knock around","",0,0,0,""
"ざあざあ","(adv) sound of rushing water/sound of pouring rain/white noise sound/(P)","",0,0,0,""
-------------------
そして下が組んだものです。

use encoding "cp932";
$/ = "\r\n";

open(DIC, "< dicdata.csv") or die "$!";
while(<DIC>){
}
close (DIC);

if($a =~ /&quop/){
$a =~ s/&quop//g;
}
open(DIC, "> dicdata.csv") or die "$!";
close (DIC);
--------------
なにとぞお願いします。

A 回答 (2件)

えーと。


変換処理もされていません。ファイルを開いて読んだだけです。

$aはプログラム中「if($a =~ /&quop/){」までの間でどこにも出てきませんよね?
ということは、$aは未定義で、文字列にしたら '' つまり長さが0の空文字列に相当します。

きちんと勉強するなら、最初に
use strct;
use warnings;
を付けて判定を厳しくするといいでしょう。
また、動作確認中は、入出力のファイル名を別にして、上書きされないようにすると作業が楽だと思います。
    • good
    • 0
この回答へのお礼

なるほど、ファイルを避難させるという手もあるんですね。
ありがとうございます。

お礼日時:2011/07/31 09:20

何も出力してないじゃん.

    • good
    • 0
この回答へのお礼

ファイルをオープンした後、変換処理したら、残りはまだ残っていると思っていました。
なるほど、ファイル出力の文がなかったんですね。

ありがとうございます。

お礼日時:2011/07/30 06:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!