camel

����ä�<*glob*>�֥᥿�黻�ҡפǡ�

Perl5 �ǥͥ��黻��Range Check - id:kazuhooku�Υ���֤���
Perl 5 �ǡ������ͤ��ϰ�������äƤ뤫��ǧ���������ȤäƤ���櫓�ǡ����Ȥ��С�
my $t = time;
if ($min <= $t && $t < $max) {
    ...
}
�ߤ����ʾ�Ĺ�ʥ����ɤϽ񤭤����ʤ���

����ʴ����ǡ�

#!/usr/bin/perl
use strict;
use warnings;
{
    no warnings 'redefine';
    *CORE::GLOBAL::glob = sub{
        my $expr = shift;
        warn $expr;
        $expr =~ s{
            \A(.*?)~~(.*?)(\^\.)(\.\^?)(.*?)
        }{
            my $num = eval $1;
            my $min = $2;
            my $lt0  = length($3) == 1 ? '<=' : '<';
            my $lt1  = length($4) == 1 ? '<=' : '<';
            my $max = $5;
            qq($min $lt0 $num && $num $lt1 $max);
        }emsx;
        warn $expr;
        eval $expr;
    };
}

local $\="\n";
print "OK" if     <length('^..^') ~~ 3^..^5>;
print "OK" unless <length('^..^') ~~ 0^..^3>;

�����Perl�ˤ����ơ�<$filehandle>�Ȱ�ä�<*glob*>����¿�˻Ȥ�ʤ��黻�ҤǤ������������micro-DSL���������ΤˤϤ��äƤĤ�������CORE::GLOBAL::glob()��DSL�֤���Ȥ��ƻȤ���ˡ�ϡ���PERL HACKS�פǤ�HACK #90�Ȥ��ƾҲ𤵤�Ƥ��ޤ���

�嵭����ϡ��ͥ��������ä�eval��Ȥ��ޤ��äƤ�ͷ�Ӥΰ��ݤ������ΤǤ���������������Ϥ�����������Ķ��Ϥǡ��嵭������Ѥʤ餳���������ѤȤ��ä�����भ�Ǥ���

#!/usr/bin/perl
use strict;
use warnings;
{
    use Carp;
    no warnings 'redefine';
    *CORE::GLOBAL::glob = sub {
        my $path = shift;
        $path =~ s/\A\s+//;
        $path =~ s/\s+\z//;
        my $slurp;
        if ( $path =~ m{\w+://} ) {
            eval { require LWP::Simple; };
            croak $@ if $@;
            $slurp = LWP::Simple::get($path);
        }
        else {
            local $/;
            open my $fh, '<', $path or croak "$path:$!";
            $slurp = CORE::readline($fh);
            close $fh;
        }
        return $slurp;
    };
}

print </etc/motd>;
print <http://www.dan.co.jp/>;

�Ȥ����櫓�ǡ�CPAN�ˤ�p���Ƥ����ޤ�����

cpan

<Enjoy/>

Dan the Perl Monger