Snippets

sironekotoro 最悪

Created by sironekotoro last modified
use strict;
use warnings;
use utf8;   # プログラム中にマルチバイト文字を利用するときに利用
use Encode; # マルチバイト文字を出力するときに利用

# 参考 https://twitter.com/6Lgug/status/1011529645559173120

# ハッシュテーブル(変換表)を用意する
my %hash = (
    '1' => 1,
    '2' => 2,
    '3' => 3,
    '4' => 4,
    '5' => 5,
    '6' => 6,
    '7' => 7,
    '8' => 8,
    '9' => 9,
    'a'   => 'A',
    'B' => 'B',
    'C' => 'C',
    'D' => 'D',
);

# ファイル下部の__DATA__以降から1行ずつ読む
for my $line (<DATA>) {
    chomp $line;

    # 正規表現でキャプチャ
    $line =~ /(\d)[年|ー]?(\w)組?/;

    my $year = 'DUMMY';

    # ハッシュテーブルを参照する
    # keyがあればvalueが返り、if文の条件が正となる
    if ( $hash{$1} ) {
        $year = $hash{$1};
    }
    else {
        # ハッシュテーブルにない場合には、
        # 半角と判断してそのまま代入する
        $year = $1;
    }

    my $class = 'DUMMY';
    if ( $hash{$2} ) {
        $class = $hash{$2};
    }
    else {
        $class = $2;
    }

    # 文字列を連結する
    my $edited = $year . "年" . $class . "組";
    # マルチバイト文字を出力するときはエンコード処理をする
    print encode ( 'utf8', $edited ), "\n";

}

__DATA__
1A
1B
1ーC
1ーD
1年E
3年A
3年B組
3年C組
3年D組
4a
4年B
4年C組
use strict;
use warnings;
use utf8;  # プログラム中にマルチバイト文字を利用するときに利用
use Encode;# マルチバイト文字を出力するときに利用

# 参考 https://twitter.com/6Lgug/status/1011529645559173120

for my $line (<DATA>) {
    chomp $line;

    # tr演算子を使う
    $line =~ tr/0-9a-zA-Za-z/0-9A-ZA-ZA-Z/;
    $line =~ tr/ー//;

    if ( $line =~ /[0-9]年[A-Z]組/ ) {
        # 何もしない
    }
    elsif ( $line =~ /(\d)年?(\w)/ ) {
        $line = "$1年$2組";
    }

    print encode('utf8',$line), "\n";
}

__DATA__
1A
1B
1ーC
1ーD
1年E
3年A
3年B組
3年C組
3年D組
4a
4年B
4年C組
# 参考 https://twitter.com/6Lgug/status/1011529645559173120
1A
1ーB
1ーC
1ーD
1年E組
3年A組
3年B組
3年C組
3年D組
4年a組
4年B組
4年C組

Comments (0)