marks.pl
# YAML 記号の読み込みテスト
# ハイフン, コロン, 角括弧, 波括弧, ハッシュ記号,
# バックスラッシュ, シングルクォート, ダブルクォート,
# 改行, タブ等の# 記号そのものを値として読み込みたい場合、
# "" または '' で括る必要がある。
use strict;
use warnings;
use utf8;
use Encode;
use YAML::Syck;
use Data::Dump qw(dump);
$YAML::Syck::ImplicitUnicode = 1;
my $charset = 'CP932';
binmode( STDIN, ":encoding($charset)" );
binmode( STDOUT, ":encoding($charset)" );
binmode( STDERR, ":encoding($charset)" );
# バージョン確認
print "Perl version: " . $] . "\n";
print "YAML::Syck version: " . $YAML::Syck::VERSION . "\n";
# 括るまたはエスケープ
my $MarksFile = './marks.yaml';
my $MarksIn = YAML::Syck::LoadFile( $MarksFile ) or die( "$MarksFile:$!" );
print dump( $MarksIn ) . "\n";
# 変数をシリアライズ
my $MarksOut = [ '-', ':', '[', ']', '{', '}', '#', '\\', '\'', '\"', "\n", "\t", ];
print Dump( $MarksOut ) . "\n";
# EOF
marks.yaml
---
- "-"
- ":"
- "["
- "]"
- "{"
- "}"
- #
- \#
- "#"
- \
- \\
- \'
- "'"
- \"
- '"'
- \n
- "\n"
- \t
- "\t"
Perl version: 5.010001
YAML::Syck version: 1.15
[
"-",
":",
"[",
"]",
"{",
"}",
undef,
"\\#",
"#",
"\\",
"\\\\",
"\\'",
"'",
"\\\"",
"\"",
"\\n",
"\n",
"\\t",
"\t",
]
---
- "-"
- ":"
- "["
- "]"
- "{"
- "}"
- "#"
- \
- "'"
- \"
- "\n"
- "\t"
NumberString1.pl
#!/usr/bin/perl
# YamlString.pl
# YAML::Syck での数値文字列の読み込みテスト
# 数値や論理値等として解釈させるには「$YAML::Syck::ImplicitTyping = 1;」が必要。
use strict;
use warnings;
use utf8;
use Encode;
use YAML::Syck qw( Load Dump );
$YAML::Syck::ImplicitUnicode = 1;
#my $charsetConsole = 'UTF-8';
my $charsetConsole = 'CP932';
my $charsetFile = 'UTF-8';
binmode( STDIN, ":encoding($charsetConsole)" );
binmode( STDOUT, ":encoding($charsetConsole)" );
binmode( STDERR, ":encoding($charsetConsole)" );
# バージョン確認
print "Perl version: $]\n";
print "YAML::Syck version: $YAML::Syck::VERSION\n";
my $yamlString = qq{
Decimal: [ 0, 1, 2, 4, 8, 10, 16 ]
Binal: [ 0b00000, 0b00001, 0b00010, 0b00100, 0b01000, 0b01010, 0b10000 ]
Octal: [ 000, 001, 002, 004, 010, 012, 020 ]
Hexadecimal: [ 0x00, 0x01, 0x02, 0x04, 0x08, 0x0a, 0x10 ]
Boolean: [ true, false, yes, no, on, off, null, ~ ]
漢字: [ 壱, 弐, 参, 四, 五 ]
HexKey: { 0x00: "00", 0x01: "01", 0x02: "02", 0x04: "04", 0x08: "08", 0x0a: "0a", 0x10: "10" }
};
$YAML::Syck::ImplicitTyping = 0; # Default
print "\n\$YAML::Syck::ImplicitTyping = 0\n";
print Dump( Load( $yamlString ) );
$YAML::Syck::ImplicitTyping = 1;
print "\n\$YAML::Syck::ImplicitTyping = 1\n";
print Dump( Load( $yamlString ) );
# EOF
Perl version: 5.014002
YAML::Syck version: 1.21
$YAML::Syck::ImplicitTyping = 0
---
Binal:
- 0b00000
- 0b00001
- 0b00010
- 0b00100
- 0b01000
- 0b01010
- 0b10000
Boolean:
- 'true'
- 'false'
- 'yes'
- 'no'
- 'on'
- 'off'
- 'null'
- ~
Decimal:
- 0
- 1
- 2
- 4
- 8
- 10
- 16
HexKey:
0x00: '00'
0x01: '01'
0x02: '02'
0x04: '04'
0x08: '08'
0x0a: 0a
0x10: 10
Hexadecimal:
- 0x00
- 0x01
- 0x02
- 0x04
- 0x08
- 0x0a
- 0x10
Octal:
- '000'
- '001'
- '002'
- '004'
- '010'
- '012'
- '020'
漢字:
- 壱
- 弐
- 参
- 四
- 五
$YAML::Syck::ImplicitTyping = 1
---
Binal:
- 0b00000
- 0b00001
- 0b00010
- 0b00100
- 0b01000
- 0b01010
- 0b10000
Boolean:
- 1
- ''
- 1
- ''
- 1
- ''
- ~
- ~
Decimal:
- 0
- 1
- 2
- 4
- 8
- 10
- 16
HexKey:
0: '00'
1: '01'
10: 0a
16: 10
2: '02'
4: '04'
8: '08'
Hexadecimal:
- 0
- 1
- 2
- 4
- 8
- 10
- 16
Octal:
- 0
- 1
- 2
- 4
- 8
- 10
- 16
漢字:
- 壱
- 弐
- 参
- 四
- 五
#!/usr/bin/perl
# 正規表現の読み込み
use strict;
use warnings;
use utf8;
use Encode;
use YAML::Syck qw( Load Dump );
use Win32::Unicode::Native;
$YAML::Syck::ImplicitUnicode = 1;
# バージョン確認
print "Perl version: $]\n";
print "YAML::Syck version: $YAML::Syck::VERSION\n";
my $obj = {
'\[AD\]$' => qr/\[AD\]$/i,
'\[広\s?告\]$' => qr/\[広\s?告\]$/,
'(吉|\x{20bb7})野' => qr/(吉|\x{20bb7})野/,
};
my $yaml = Dump( $obj );
print $yaml;
my $yaml2 = q{
---
'\[AD\]$':
!!perl/regexp (?^i:\[AD\]$)
'\[広\s?告\]$':
!!perl/regexp (?^:\[\x{5e83}\s?\x{544a}\]$)
'(吉|\x{20bb7})野':
!!perl/regexp (?^:(\x{5409}|\x{20bb7})\x{91ce})
};
print $yaml2;
my $conf = Load($yaml2);
print Dump($conf);
print "====\n";
my @samples = (
"無料で始める恋愛ドラマアプリ[広 告]",
"この夏をもっと楽しもう[Ad]",
"\x{20BB7}野家",
);
foreach my $sample (@samples){
my $isMatch = '';
foreach my $regex (keys(%{$conf})){
if ( $sample =~ $conf->{$regex} ){
$isMatch = $regex;
last;
}
}
if ( $isMatch ){
printf("match(%s): '%s'\n", $isMatch, $sample);
} else {
printf("not match: '%s'\n", $sample);
}
}
# EOF
Perl version: 5.014004
YAML::Syck version: 1.22
---
"(吉|\\x{20bb7})野": !!perl/regexp "(?^u:(\xE5\x90\x89|\\x{20bb7})\xE9\x87\x8E)"
\[AD\]$: !!perl/regexp (?^i:\[AD\]$)
"\\[広\\s?告\\]$": !!perl/regexp "(?^u:\\[\xE5\xBA\x83\\s?\xE5\x91\x8A\\]$)"
---
'\[AD\]$':
!!perl/regexp (?^i:\[AD\]$)
'\[広\s?告\]$':
!!perl/regexp (?^:\[\x{5e83}\s?\x{544a}\]$)
'(吉|\x{20bb7})野':
!!perl/regexp (?^:(\x{5409}|\x{20bb7})\x{91ce})
---
"(吉|\\x{20bb7})野": !!perl/regexp (?^u:(?^:(\x{5409}|\x{20bb7})\x{91ce}))
\[AD\]$: !!perl/regexp (?^:(?^i:\[AD\]$))
"\\[広\\s?告\\]$": !!perl/regexp (?^u:(?^:\[\x{5e83}\s?\x{544a}\]$))
====
match(\[広\s?告\]$): '無料で始める恋愛ドラマアプリ[広 告]'
match(\[AD\]$): 'この夏をもっと楽しもう[Ad]'
match((吉|\x{20bb7})野): '𠮷野家'