ไฝๆกใใใๆฐใไธ็ฌใงๆๆกใใใซใฏใฉใใใใ่ฏใ?
ไฝใฎใฌใใคใใใใใใใชๅคงใใชใใผใฟใใใณใใณใใฉใคใณไธใงๆฑใฃใฆใใใจใๅคงใใชๆกๆฐใฎๆฐใ็ฎใซใใใใจใซใชใใใใฆใ8ๆกใ9ๆกใใใๆฐใใฉใใใฃใใไธ็ฎใงไฝๅไธใจใไฝๅใจใๅใใใ ใใใ๏ผๅ ดๅใซใใฃใฆใฏใๅ ใไบฌๅไฝใฎๆฐใ็พใใใใจใใใใ ใใใSQLใฎ็ตๆใงใใใ่กๆฐใๆฐใใ wc -l ใฎๅบๅใงใใใๅคงใใชๆฐใ็ฎใซใใใใจใ่ฟๅนดๅคใใใใฎๅ้กใซ้ฉๅใซๅฏพๅฆใใๆนๆณใฏใพใ ใใพใไธใซ็ฅใใใฆ็กใใใใใใชใใฎใงใ่ชๅใง่งฃๆฑบ็ญใ่ใใฆใฟใใ
ใณใณใใง็กใใฆ่ฒใไปใใใ่ฏใใจๆใใใใ
ไธ่จใๅฎ็พใใใใญใฐใฉใ
ไธ่จใฏใ0ใใ9ใพใงใฎๆฐๅญใไธฆใใงใใใฐใใใฎไธใฎไฝใใ3ๆกใใค่ฒใไปใใฆใใใใชใใใณใณใใงๅบๅใๆนๆณใ่ใใใใใใๆฐใจใใฆใฎๆๅณใฎใใใจใใใ ใใณใณใใๆฟๅ ฅใใใใซใใชใใชใใใพใใใใชใใๆฐๅญใฎไธฆใณใ ใใๅ็ดใซ3ๆกใใจใซใณใณใใงๅบๅใใจๆๅณใฎใชใๆใซใณใณใใๅ ฅใใใใใใฆ้ฃใใใขใซใดใชใบใ ใ่ใๅบใใใใญใชใ็กใใ ใใใๆฅไปใๆฅไปใจใใพใๅคๆญใใฆใใใคใงใ้ฉๅใช่จๅทใไปๅ ใงใใ็ฐกๅใชๆนๆณใฏใใใ ใใใ๏ผใใใใๅคงๆฆใฎๅ ดๅใๆๅญ้ ๅใฎใฌใคใขใฆใใๅดฉใใใใใฆใ่ชญใฟใซใใใชใใ
ใใฃใฑใไธใฎๅณใฎใใใซ่ฒใไปใใๆนใ่ฏใใ ใใใใใกใคใซๅใฎไธญใซๆฐใ็พใใฆใใใซ่ฒใใคใใฆใใใใพใไธ่ช็ถใงใฏใชใใ
ไธ่จใฎ็ปๅใฎใใใช่ฒใไปใใใใจใๅฎ็พใใใใญใฐใฉใ ใฏใใใฎ่จไบใฎๆๅพใซใใPerlใใญใฐใฉใ ใงใใใ
ใใฎใใญใฐใฉใ ใซใคใใฆใฏใMacใฎใฟใผใใใซใงใใWindowsใฎใณใใณใใใญใณใใใงใCygwinใงใใAmazon Linux ใงใใใพใ่ฒใไปใใใจใๆขใซ็ขบใใใฆใใใใใญใฐใฉใ ใฏไธ่จใฎใใใซใชใใใใญใฐใฉใ ๅใฏๅใใฎ้ ใฏใcolor, colors, coloring ใจใใใใๅคใใใใไปใฎๆใฏ colorplus ใจใใฆใใใ
ใชใใไธ่จใฎใใญใฐใฉใ ใฏใ3ๆกใใจใซไธไฝใใ่ฒใไปใใใ ใใงใฏใชใใฆใ4ๆกใใจใ่ฒใไปใใใใ่ฒใใใฃใใ่ฒใๆถใๆฉ่ฝใไปใใใใใฟใใซใใๅบๅใใง่ฒใใคใใใใใๆฉ่ฝใใใฃใใใใใ
# !/usr/bin/perl
use 5.014 ; use strict ; use warnings ;
use Getopt::Std ; getopts "e:l:t:v034,:" , \my%o ;
use Term::ANSIColor qw/color colored colorstrip/ ;
$o{','} //= "\t" ;
$| = 1 if $o{v} ;
my %except ; $except {$_} =1 for split /,/ , $o{e}//'' ;
while ( <> ) {
print $_ if $except{$.} ; # ่ฒๆ
ๅ ฑใฎๆถๅป
$_ = colorstrip ($_) if $o{0} ;
$_ = &ColorDigits ($_) if $o{3} || $o{4} ;
$_ = &ColorTabbing ($_,$o{t}) if $o{t} ;
$_ = &ColorLines ($_,$o{t}) if $o{l} ;
print $_ ;
}
exit 0 ;
# ๆๅฎใใใๆฐใฎๅใฎใฟใใใจใซใ้ใ่ๆฏ่ฒใใคใใใ
sub ColorLines ($$) {
$. % $o{l} == 1 ? colored ( $_ , "on_blue" ) : colored ( $_ , "on_black" ) ;
}
sub ColorTabbing ($$) {
chomp ;
my @F = split /$o{','}/ , $_[0] ;
my @out ;
for ( 0..scalar @F -1){
push @out, color( ['on_black','on_blue']->[int($_/$_[1])%2] ) . $F[$_] ;
}
return join ($o{','},@out).color('reset')."\n" ;
}
## ๆฐๅญใซ่ฒใใคใใใ
sub ColorDigits ($) {
my @accum = &wellSplit ( $_[0] ) ;
my $outStr = join '' , map { &wellPrint ($_) } @accum ;
return $outStr ;
}
sub wellPrint ($){
my $outstr = '' ;
sub loc ($) {
my $x=$_[0]-1;
my $l = $o{3} ? 3 : $o{4} ? 4 : 5 ; # 5ใฏไฝฟใใชใใ ใใ
($x-($x% $l ))/$l %3
} ;
my $str = $_[0] ;
if ( $str !~ /^\d/ ) {
$outstr .= $_ ;
return $outstr ;
}
my @wStr = split //, $str ,0 ;
for ( -scalar @wStr .. -1 ) {
$outstr .= ${[color('cyan'),color('green'),color('yellow')]} [ &loc (-$_) ] . $wStr[$_] ;
}
return $outstr.color('white') ;
}
sub wellSplit ($) {
my @wholeStr = split // , $_[0] , -1 ;
my @accum ;
my $tmpstr = '' ;
my $dflag = 0 ;
for ( 0 .. scalar @wholeStr -1 ) {
my $c = $wholeStr [ $_ ] ;
my $dflag0 = $c ge "0" & $c le "9" ;
if ( $dflag0 xor $dflag ) {
push @accum , $tmpstr if $_ ;
$tmpstr = $c ;
$dflag = $dflag0 ;
}
else {
$tmpstr .= $c ;
}
}
push @accum, $tmpstr ;
return @accum ;
}
sub VERSION_MESSAGE {}
sub HELP_MESSAGE{
$0=~s|.*/|| ; $ARGV[1] //= '' ;
while(<DATA>){
s/\$0/$0/g ;
print $_ if $ARGV[1] =~ /opt/ ? m/^\ +\-/ : s/^=head1// .. s/^=cut// ;
}
exit 0 ;
}
__END__
=encoding utf8
=head1 color.pl
่ฒ( Term::ANSIColor ) ใซใคใใฆใฎใใใใใชใฆใผใใฃใชใใฃใผ
-0 ใงๅ
ฅๅใฎ่ฒๆ
ๅ ฑใๆถๅปใใใ
-3 ๆฐใไธไฝใใ3ๆกใใจใซๅกใๅใใ
-4 ๆฐใไธไฝใใ4ๆกใใจใซๅกใๅใใใ
-e linenumbers ใณใณใ(,)ๅบๅใใฎๆฐใไธฆในใใจใใใใซใใๆๅฎใใใ่กใซใคใใฆใฏ่กจ็คบใฏใใใ็่ฒใชใฉใฏไฝใใใชใใ
-l num : num่กๅจๆใงๆๅใฎ่กใซ่ๆฏใ้ใใใใ
-t num ใฟใๅบๅใ num ๅใใจใซ้ใฎ่ๆฏ่ฒใใคใใใ
-v ๅฆ็็ตๆใใใใซๆธใๅบใใใใใใกใซ่ฒฏใใชใใ
-, str : ๅใฎๅกใๅใใใใ้ใซใๅใฎๅบๅใใ str ใงๆๅฎใใใๆชๆๅฎใชใใใฟใๆๅญใ
=cut



