記事

Last Modified:

Perlクイズです。print Dumper <!DOCTYPE html> #Perl

PerlではSGMLを直接スクリプト(もちろんstrict)に書くことができて、超簡易的ですがパースもやってくれます。(JSXではありませんよ)

# quiz.pl
use strict;
use Data::Dumper;

print Dumper <!DOCTYPE html>;
$ perl quiz.pl
$VAR1 = '!DOCTYPE';
$VAR2 = 'html';

metaタグならこのようにパースされます。

$ perl -MData::Dumper -e 'print Dumper <meta charset="UTF-8">'
$VAR1 = 'meta';
$VAR2 = 'charset=UTF-8';

ではXML宣言ではどうでしょうか?

$ perl -MData::Dumper -e 'print Dumper <?xml version="1.0" encoding="UTF-8"?>'
$VAR1 = 'version=1.0';

おや、出力が少し足りませんね。。。XMLには対応していないのでしょうか? いえいえ、そんなことはありません。 とある工夫をすることで以下のように正常にパースできました。

$ perl -MData::Dumper -e 'print Dumper <?xml version="1.0" encoding="UTF-8"?>'
$VAR1 = '?xml';
$VAR2 = 'version=1.0';
$VAR3 = 'encoding=UTF-8?';

さてここでクイズです。「とある工夫」とは一体何でしょうか?

<> = glob

$ touch '?xml' 'encoding=UTF-8?'
$ ls -1
encoding=UTF-8?
?xml

ではでは!