
よろしくお願いいたします。
Perlのprint文で、&(半角の&)文字を含む
文字列を、テキストファイルに出力しようとすると、
”undeclared entity[Ln: 37, Col: 22]”
という、その&文字の箇所で、
エラーが出て、強制終了されてしまい、
そこまで(途中まで)しか、テキストファイルに出力されません。
どうすれば、Perlで、
&(半角の&)文字を含む文字列を、
テキストファイルに出力出来るようになるのかを
教えてください。
どうぞよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
これは、perlの問題ではなく、出力結果がどう解釈されるか、の問題です。
perlから&を出力するなら、普通に print "&"で問題ありません。
「テキストファイル」と言いながら、実際にはXMLであり、XMLの文法として &で始まる実体参照だと解釈され、処理しようとしら定義されていないのでエラーになった、というのが今回の現象です。
「Perlから」とかは関係なしに、「XMLとして正しい出力」を考え、その通りになるように「Perlのプログラムを作る」のが正解でしょう。
タグの中身をs/&/&/gとでもやって全部置き換えるとか、XML関係のモジュールを使うとか。
「kmee」様
私がPerlやXMLの初心者で、質問の仕方が不明瞭で
ご迷惑をおかけいたしましたが、
ご回答いただきました内容で、
さっそく試したところ正常に動きました。
ご回答いただきまして、本当にありがとうございました。
No.3
- 回答日時:
あ, #1 に追加です.
可能ならプログラムも出してください.
この回答への補足
ありがとうございます。
#1は、
以下XMLファイル内の、&文字1つを含む文字列”Goagle&DEF123Site”になります。
(この&文字箇所でprint文出力時にエラーとなり強制終了しています)
<?xml version="1.0" encoding="UTF-8"?>
<orgsites>
<orgsite>
<name>Goagle&DEF123Site</name>
<url>http://www.goagleSite.co.jp/</url>
</orgsite>
</orgsites>
#3は、
単純なprint文で、
書込用ファイルハンドルに対して、
&文字1つを含む文字列をセットした、
print $writefilehandle "Goagle&DEF123Site";
です。
以上になります。
よろしくお願いいたします。
「Tacosan」様
私がPerlやXMLの初心者で、質問の仕方が不明瞭で
ご迷惑をおかけいたしましたが、
いろいろとありがとうございました。
No.2
- 回答日時:
半角の&を表示するには「&」
半角の空白を入れるには「」
「」の中の文字を入れれば表示されます。
この回答への補足
ご回答ありがとうございます。
もし情報をお持ちでしたら、ぜひあわせて教えてください。
ご回答を当てはめて検討したところ、
print文で出力する直前に、
出力対象の文字列全体に対して、
Perl上で"&"文字が存在するか?
を何らかの方法でチェックして、
もし"&"文字が存在したら、
出力対象の文字列全体における、
"&"文字の前箇所と、
"&"文字と、
"&"文字の後箇所の3か所にそれぞれ分割して、
"&"文字の箇所のみを、
print $writefilehandle "&";
みたいに固定で出力すればよいと判断致しました。
しかし上記いたしましたように、大変冗長な為、
もっとシンプルに対応する方法などございましたら、
ぜひ教えてください。
よろしくお願いいたします。
「sendaifuji」様
私がPerlやXMLの初心者で、不明瞭な質問の仕方になってしまい、
ご迷惑をおかけいたしましたが、おかげさまで問題解決致しました。
ご回答いただきまして、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- その他(プログラミング・Web制作) 2つのテキストファイルを比べて文字列を特定する方法を教えて下さい 5 2022/05/01 15:22
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(ソフトウェア) ソースネクストアプリをインストールし、製品登録で半角英数字が入力できない 5 2022/07/03 22:44
- 大学・短大 学生ローン日本学生機構の奨学金について詳しい方教えて下さい。 保証人の職場にパソコンから株式会社○○ 1 2022/04/13 05:57
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sprintfについて
-
画像がテキスト表示になる。
-
perl 読込ファイルの分割について
-
重複するデータを抽出できる秀...
-
perlでの出力先設定
-
文字コードの変換(Shift-JISか...
-
Perlのプログラミングについて
-
エディターでは改行なのにメモ...
-
エクセルVBAで素数だけを出力す...
-
PerlでIf-Modified-Since取得
-
Perlでファイルの末尾から指定...
-
print文で&(半角)文字のエラー...
-
C言語の問題について
-
log2の「正確な」計算方法
-
Perlで着メロDLカウント
-
正規表現で"-" "0-9"以外を削除...
-
Perlを使った単語出現カウント
-
バッチファイルの作り方(CSV→...
-
Perlでのテキスト処理について
-
全角と半角文字が混在している...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
sprintfについて
-
重複するデータを抽出できる秀...
-
バッチファイルで、記号を含む...
-
DOSコマンドで、標準出力を出力...
-
[Perl]ファイル出力のエンコー...
-
テキストファイルから日本語部...
-
Perl<->Oracle間での文字化けに...
-
Perl内でJavaScri...
-
エクセルVBAで素数だけを出力す...
-
log2の「正確な」計算方法
-
LWPでPOST送信した後に送信先に...
-
open (FILEHANDLE,"< $filename...
-
文字コードの変換(Shift-JISか...
-
Perlでファイルの末尾から指定...
-
ファイル出力の改行コードをLFに
-
perl初心者です。宜しくお願い...
-
アルファベット、数字を読み込...
-
Perl で出力するHTMLファイルを...
-
sprintfで10進数を桁数指定で16...
おすすめ情報