PerlのXML::Simpleを利用してXMLデータを加工しようと思ったのだけれど、ハッシュのキーを取得する時にエラーが発生
Bareword “CHAR” not allowed while “strict subs” in use at third.pl line XX. (CHARは実際には文字列)
どこが問題なのかはすぐに分かった。ハイフンが入っている文字列の部分だ。ちなみにこれはPerlプログラミングでお馴染みの use strict(の、use strict “subs”)による警告なのだそうだ。
use strict; を使う理由 – とりあえずメモメモ。
同じ問題を抱えているPHPプログラマの方がいた。(なお、今回のブログタイトルはこちらの方の記事タイトルから一部拝借した。)
phpのSimpleXMLでXMLのハイフン入りの要素名が取得できない|本を買わずに解決するWeb制作の小技
XML ドキュメント内の要素のうち、PHP の命名規約で許可されていない文字 (たとえばハイフンなど) を含む名前のものにアクセスするには、 要素名を括弧とアポストロフィで囲みます。Example#3 <line> を取得する<?phpinclude ‘example.php’;$xml = new SimpleXMLElement($xmlstr);echo $xml->movie->{‘great-lines’}->line; // “PHP solves all my web problems”?>
要素名をアポストロフィで囲めばよかった。この記事のお陰で僕はハマらずに済んだ。