Snippets

sironekotoro 正規表現を使わずに文字のパターンマッチ non_use_regex.pl

Created by sironekotoro last modified
#!/usr/bin/env perl
use strict;
use warnings;

# 第4回 サブルーチン/正規表現編
# https://github.com/perl-entrance-org/workshop-2018/blob/master/4th/slide.md
# もし、正規表現を使わずに文字のパターンマッチをするとしたら・・・?

my $line = 'papix loves perl';

# 通常の正規表現
if ( $line =~ /perl/ ) {
    print "include\n";
}


# 正規表現を使わない場合・・・
# 文字列を1文字ずつバラして配列に入れる
my @char = split //, $line;

# 配列から1文字ずつ取り出す
for ( my $i = 0; $i <= $#char; $i++ ) {

    # 取り出した文字が p だったら次のif文を実行する
    if ( $char[$i] eq 'p' ) {

        # p の次の文字が存在し、それが e であれば次のif文を実行
        if ( $char[ $i + 1 ] && $char[ $i + 1 ] eq 'e' ) {

            # e の次の文字が存在し、それが r であれば次のif文を実行
            if ( $char[ $i + 2 ] && $char[ $i + 2 ] eq 'r' ) {

                # r の次の文字が存在し、それが l であれば include と表示
                if ( $char[ $i + 3 ] && $char[ $i + 3 ] eq 'l' ) {
                    print "include\n";
                }
            }
        }
    }
}

Comments (0)