Last Updated at $Date: 2005/12/04 04:00:59 $.
���Υڡ����ϡ�Perl-5.8.2 ��Ȥ���Ǻ��ä����ȤʤɤγФ��Ǥ���
Perl-5.8.x �����ܸ��������ץȤ��硤�礭��2�̤����ˡ������ޤ���
�ɤ������ˡ�Ǥ⡤ (1)�ե������������� (2)�ǡ����١������������� (3)�ץ��������̿���3�Ĥ˵���Ĥ��ơ� ����Ū�˥Х������ʸ������Ѵ������ꡤ�ޤ��դ�ʸ�����Х�������Ѵ�����ɬ�פ�����ޤ���
�ºݤˤϡ������3�Ĥ����ơ֥ե�����ϥ�ɥ�פȤ�����ݲ������Τǡ� �ޤȤ�ư������Ȥ��Ǥ��ޤ�����
���ܤˤʤ�Τϡ�encoding �ץ饰�ޤǤ���
use encoding "euc-jp"; print "����ˤ���\n";
use encoding "euc-jp"
�Ȥ�������ϡ�
(1)ɸ�������Ϥ�ʸ�������ɤȤ������ܸ� EUC ��Ȥ���
(2)������ץȤ����ܸ� EUC �ǵ��Ҥ���Ƥ���ȸ��ʤ����Ȥ�����̣������ޤ���
�ޤ���encoding �ץ饰�ޤˤ�����ϡ��������Х�ʸ��̤�����ޤ���
�������äơ����λ�������Ǥ�ɸ�२�顼���Ϥˤ����������Ϥ���ޤ���
use encoding "euc-jp"; warn "ʸ����������Ϥ��Ǥ�\n";
����������뤿��ˤϡ�binmode
�ؿ���Ȥäơ�
ɸ�२�顼���Ϥ�ʸ�������ɤ�����Ū�����ꤷ�Ƥ����ޤ���
use encoding "euc-jp"; binmode STDERR, ":encoding(euc-jp)"; warn "����˽��Ϥ���ޤ�����?\n";
�ܤ����ϡ���������Ȥ��Ƥ���������
�Ȥꤢ������use encoding ... binmode ...
�ϥ��ǥ�����Ȥ��ƳФ��Ƥ����ޤ��礦��
encoding �ץ饰�ޤϥ������Х�ʸ��̤�����ޤ����顤�ʲ����������դ�ɬ�פǤ���
�ؿ� foo
�����������ϡ�ñ�ʤ�Х�����Ȥ��ư��ä��ߤ����ȹͤ��ơ�
�ʲ��Τ褦�ʻ���Ƥ�ư���ޤ���
sub foo { no encoding; $str = "���ܸ�EUC�ΥХ�����šŤȤϲ�ᤵ��ʤ�"; }
ISO-2022-JP �� Shift-JIS �ʤ�¾��ʸ�������ɤǵ��Ҥ���Ƥ���⥸�塼��� ���ܸ� EUC �ǵ��Ҥ���Ƥ���Ȱ�礷�Ƹ��ʤ���Ƥ��ޤ��ޤ��� �������äơ������Υ⥸�塼����ǻȤ��Ƥ���ʸ���ϡ�����˲�ᤵ��ʤ��Ǥ��礦�� ��������UTF-8 �ǵ��Ҥ���Ƥ��ơ����ġ� utf8 �ץ饰�ޤ����ꤵ��Ƥ���⥸�塼������ѤǤ��ޤ���
use utf8; # ... UTF-8 �ǵ��Ҥ��줿�⥸�塼�� 1;
ʣ���� encoding �ץ饰�ޤ����ꤵ�줿���ϡ��Ǹ�Υץ饰�ޤ�������̣������ޤ���
���ܤˤʤ�Τϡ�utf8 �ץ饰�ޤǤ���
# �ʲ��Υ�����ץȤ� UTF-8 ����¸���뤳�ȡ� use utf8; print "UTF-8 �Ǥ���ˤ���\n";
���Υ�����ץȤϡ�ɸ�������ϤȤ��̿��ˤ� UTF-8 ��Ȥ��ޤ��� �����ƥ����Τ� Unicode �������Ȥ��������οͤϤ�����ɤ��Ǥ��礦���� �ޤ���¿���οͤ����ܸ� EUC ��ȤäƤ���Ǥ��礦�� ���ξ��ϡ��ʲ��Τ褦�ˡ� ɸ�������Ϥ����ɸ�२�顼���Ϥˤ����ܸ� EUC ��Ȥ��褦�˻��ꤷ�Ƥ���������
# �ʲ��Υ�����ץȤ� UTF-8 ����¸���뤳�ȡ� use utf8; binmode STDOUT, ":encoding(euc-jp)"; binmode STDERR, ":encoding(euc-jp)"; binmode STDIN, ":encoding(euc-jp)"; print "UTF-8 �Ǥ���ˤ���\n";
�Ȥ߹��ߴؿ� open
�ν���ĥ����ơ�
�ɤ߹��ߡ����ߤ� encoding ������Ǥ���褦�ˤʤäƤ��ޤ���
���γ�ĥ�����Ѥ���Τ����Ǥ����Ū����ˡ�Ǥ���
open( F, "<:encoding(euc-jp)", "filename" ) or die; print <F>; close F;
�ܤ�������ϡ�perldoc -f open
�ޤ��� perldoc perlopentut
���Ƥߤ�������ޤ���
binmode
�ؿ���Ȥ�
���� open
�ѤߤΥե�����ϥ�ɥ���оݤȤ��ơ�
encoding �����(�ѹ�)������ϡ�binmode
�ؿ���Ȥ��ޤ���
binmode STDOUT, ":encoding(euc-jp)";
open
��ƤӽФ����Ӥ˻��ꤹ��Τ����ݤ���
�Ȥ������ϰʲ��Τ褦�� open �ץ饰�ޤǻ��ꤷ�ޤ���
use open IO => ":encoding(euc-jp)"; open( F, "< filename" ) or die; print <F>; close F;
open �ץ饰�ޤˤ������ pipe �ξ��ˤ�ͭ���ˤʤ�ޤ���
�ʲ�����Ǥϡ�ISO-2022-JP �� encode ���줿ʸ���� kcc
���Ϥ���ޤ���
use encoding "euc-jp"; use open OUT => ":encoding(iso-2022-jp)"; open( P, "| kcc -c" ) or die; print P "������ޤ�ʸ\n";
��ĥ���줿 open
�ؿ��θƽФ��ξ��(= ������3�İʾ���ꤵ��Ƥ�����)�ˤϡ�
open �ץ饰�ޤˤ������ͭ���ˤϤʤ�ޤ���
# ���Υ�����ץȤϴ����̤��ư��ʤ��� use encoding "euc-jp"; use open IO => ":encoding(euc-jp)"; open( F, "<", "filename" ) or die; while( <F> ){ m/����ɽ��/ and print; }
����Ū�ʥե�����ϥ�ɥ�̾�����Ѥ��Ƥ���ȡ� �ե�����ϥ�ɥ�̾�ξ��ͤ����ˤʤ롤 �Ȥ������ϼ��Τ褦�˽ޤ���
open( my $fh, "< filename" ) or die; print <$fh>
�ʤ����ѿ� $fh
�Υ������פϴؿ� open
��°����֥��å��Ȱ��פ��Ƥ��ޤ���
use strict; if( open( my $fh, "not-exist-file" ) ){ print <$fh>; } else { print $fh; } # ������ print $fh �Ƚȡ�compile error �ˤʤ롥
���μ¸���̤���ʬ�����̤ꡤopen
�˼��Ԥ������Ǥ�
$fh
�����Ƥ϶��ǤϤʤ��Τǡ��ʲ��Υ�����ץȤ�ư��ޤ���
# ���Υ�����ץȤϴ����̤��ư��ʤ��� open( my $fh, "not-exist-file" ); if( $fh ){ # �����˽������ܤäƤ��ޤ��� print <$fh>; } else { print "Cannot open file\n"; }
Perl-5.6 ��Ʊ���褦�ˡ�IO::File
�⥸�塼��ޤ���
FileHandle
�⥸�塼����Ѥ��뤳�Ȥ�Ǥ��ޤ���
use IO::File; my $fh = IO::File->new( $0, "<" ) or die; # ʸ�������ɤ���ꤹ����� binmode �ؿ���Ȥ� binmode( $fh, ":encoding(euc-jp)" ); # ��������open �γ�ĥ���줿��ʸ�������ɤ���ꤷ�褦�Ȥ���ȡ����顼�ˤʤ� my $fh2 = IO::File->new( $0, "<:encoding(euc-jp)" ) or die;
Perl-5.8 �������Ǥϡ����Ƥ�ʸ���� Unicode ��ɽ������Ƥ��ޤ��� �������äơ�Ϣ������Υ������ͤȤ��Ƥ⡤���ܸ�����̤˻Ȥ����Ȥ��Ǥ��ޤ���
use encoding "euc-jp"; my %hash; $hash{"����"} = "��"; while( my( $key, $value ) = each %hash ){ print "$key:$value\n"; }
�Ȥ�������DB_File
���饹�� GDBM_File
���饹�ȷ���դ���줿(tie ���줿)Ϣ�������Ȥ����Ȥ���ȡ�
��¸�����Ĥ���ʸ��������줺���ԲĻĤ�ư���褦�ˤʤ�ޤ���
use DB_File; use encoding "euc-jp"; tie( %hash, 'DB_File', "filename", O_CREAT ) or die; $hash{"����"} = "��"; while( my( $key, $value ) = each %hash ){ print "$key:$value\n"; } # ���Υ�����ץȤ�¹Ԥ��Ƥ⡤�ޤȤ��ʸ����������ޤ���
�ʲ��Τ褦�ˡ�����Ū�� decode ����С�������ʸ�����������뤳�Ȥ��Ǥ��ޤ���
use DB_File; use Encode qw/ decode_utf8 /; use encoding "euc-jp"; tie( %hash, 'DB_File', "filename", O_CREAT ) or die; $hash{"����"} = "��"; while( my( $key, $value ) = each %hash ){ printf( "%s:%s\n", &decode_utf8($key), &decode_utf8($value) ); }
�ǡ����١����ȸ��äƤ⡤�ե�����Ȥ������Ϥ�ԤäƤ��뤳�Ȥ��Ѥ��Ϥ���ޤ��顤
�ե����������Ʊ�ͤˤ������
encode/decode ��Ԥ�ɬ�פ�����櫓�Ǥ���
DB_File
�⥸�塼��ξ��ϰʲ��Τ褦�ˡ�
�������ͤ��ɤ߽���Ȥ��Υե��륿�����ꤹ��ȡ������̤��ư���褦�ˤʤ�ޤ���
use DB_File; use Encode qw/ encode decode /; use encoding "euc-jp"; $db = tie( %hash, 'DB_File', "filename", O_CREAT ) or die; $db->filter_store_key ( sub { $_ = encode("euc-jp", $_) } ); $db->filter_store_value( sub { $_ = encode("euc-jp", $_) } ); $db->filter_fetch_key ( sub { $_ = decode("euc-jp", $_) } ); $db->filter_fetch_value( sub { $_ = decode("euc-jp", $_) } ); $hash{"����"} = "��"; while( my( $key, $value ) = each %hash ){ print "$key:$value\n"; }
���Τ褦�ʥե��륿���������Ƥ��ʤ��⥸�塼���Ȥ�ɬ�פ�������ˤϡ�
��ñ�ʥ�åѡ���в��Ǥ��ޤ���
GDBM_File
�⥸�塼��Υ�åѡ������ʲ��˼����ޤ���
�ʲ��Τ褦�����ƤΥ�����ץȤ����ܸ� EUC ����¸���Ƽ¹Ԥ��Ƥߤޤ���
my $str = "����"; $str =~ s/��//; print "$str\n";
������ꤷ�ʤ���С����Τ褦�ʷ�̤�������Ǥ��礦��
$ perl sample.perl ��
���η�̤ϡ�¿�Х���ʸ����ʸ���������θ����������ɽ���������Ԥ��Ƥ��ޤäƤ��뤳�Ȥ��Ƥ��ޤ���
Perl ��¿�Х���ʸ����ʸ���������θ�����뤿��ˤϡ�������������̤ꡤ ��������ˡ��¿�Х���ʸ����ޤॹ����ץȤ��ɬ�פ�����ޤ���
use encoding "euc-jp"; my $str = "����"; $str =~ s/��//; print "$str\n";
# �ʲ��Υ�����ץȤ� UTF-8 ����¸���뤳�ȡ� use utf8; my $str = "����"; $str =~ s/��//; print "$str\n";
Unicode ���ʤ��������Ƥ���ʸ�����̾�������Ѥ���ȡ� �ʲ��Τ褦������ɽ������Ȥ��Ǥ��ޤ���
- ʿ��̾�˰��פ�������ɽ��
$str =~ m/(\p{Hiragana}+)/;
- �Ҳ�̾�˰��פ�������ɽ��
$str =~ m/(\p{Katakana}+)/;
- �������˰��פ�������ɽ��
$str =~ m/(\p{Punctuation}+)/;
- �����˰��פ�������ɽ��
$str =~ m/(\p{Han}+)/;
�ܤ����ϡ�perldoc perljp
���ƤߤƲ�������
Encode::Guess
�⥸�塼���Ȥ��ޤ���
�Ȥ����ˤϡ�
(1)ʸ�������ɤ���ꤹ��ؿ� guess_encoding
������Ū�˸ƤӽФ���ˡ�ȡ�
(2)��ư�����Ԥ����Ȥ���ꤹ�����̤�ʸ�������� Guess
����ꤹ����ˡ��
��2�̤꤬����ޤ���
��1����ˡ�μ���Ȥ��ơ���ñ�� nkf ���ޥ�ɤ� perl �Ǽ������Ƥߤ�ȡ��ʲ��Τ褦�ˤʤ�ޤ���
#!/usr/bin/perl use Encode qw/ from_to /; use Encode::Guess; use Getopt::Long qw/ :config no_ignore_case /; use open IO => ":bytes"; use strict; my $in; my $out = "euc-jp"; &GetOptions( 'JIS' => sub { $in = "7bit-jis"; }, 'EUC' => sub { $in = "euc-jp"; }, 'SHIFTJIS' => sub { $in = "shiftjis"; }, 'jis' => sub { $out = "7bit-jis"; }, 'euc' => sub { $out = "euc-jp"; }, 'shiftjis' => sub { $out = "shiftjis"; } ); my $data = join( undef, <> ); unless( $in ){ my $enc = guess_encoding( $data, qw/ euc-jp shiftjis 7bit-jis / ); if( ref $enc ){ $in = $enc->name; } else { die "Cannot estimate encoding: $enc\n"; } } &from_to( $data, $in, $out ); print $data;
ʸ�������ɤ�ư���ꤹ�� guess_encoding
�ؿ��ϡ������Ȥ��ơ�
�����оݤȤʤ�ǡ�����ʸ�������ɤο����ϰϤ���ޤ���
��2����ˡ�����ʤ�����̤�ʸ�������� Guess
����ꤹ����ϡ�
ʸ�������ɤο����ϰϤ�Ŭ������ˡ����˻��ꤷ�Ƥ���ɬ�פ�����ޤ���
��äȤ��ñ����ˡ�ϡ��ʲ��Τ褦�� Encode::Guess
�⥸�塼��ΰ����Ȥ��ƻ��ꤹ����ˡ�Ǥ���
use Encode qw/ decode encode /; use Encode::Guess qw/ euc-jp shiftjis 7bit-jis /; print encode( "euc-jp", decode( "Guess", join( undef, <> ) ) );
�ʲ��Τ褦�ˡ�set_suspects
�ؿ����Ѥ��ƻ��ꤹ�뤳�Ȥ�Ǥ��ޤ���
use Encode::Guess; Encode::Guess->set_suspects( qw/ euc-jp shiftjis 7bit-jis / );
����¾�ξ���ϡ� ��äȾܤ����ڡ����Ƥ���������
encoding �ץ饰�ޤϡ�Perl-5.6 �� Jperl �ˤ�¸�ߤ��ʤ��Τǡ� ���̤� encoding �ץ饰�ޤ�Ȥä�������ץȤ�¹Ԥ��褦�Ȥ���ȡ� �ʲ��Τ褦�ʥ��顼�ˤʤ�ޤ���
Can't locate encoding.pm in @INC. BEGIN failed--compilation aborted at sample.perl line 3.
�ʲ��Τ褦�ˡ�BEGIN
�֥��å������Ѥ��ơ�
Perl �ΥС��������ԤäƤ��� require & import ��Ԥ��褦�ˤ���ȡ�
encoding �ץ饰�ޤ�¸�ߤ��ʤ� Perl �Ǥ�ư��������ץȤ��ޤ���
use English qw/ $PERL_VERSION /; BEGIN { if( $PERL_VERSION > 5.008 ){ require encoding; encoding->import( "euc-jp" ); } }
���ܸ������ɽ����ȤäƤ���ʤɤ���ͳ�ǡ� Perl-5.8.x �ޤ��� Jperl ������Ȥ��������ϰʲ��Τ褦�˽ޤ���
use English qw/ $PERL_VERSION /; BEGIN { if( $PERL_VERSION > 5.008 ){ require encoding; encoding->import( "euc-jp" ); } elsif( split( //, "��" ) == 1 ){ require I18N::Japanese; I18N::Japanese->import(); } else { die "Your Perl does not support Japanese characters."; } }
HTML::TreeBuilder
�ǽ�������ˤ�?
���ܸ���ʬ�� Unicode ��ʸ�����λ��Ȥ��Ѵ�����Ƥ��ޤ���
use strict; use encoding "euc-jp"; use Encode qw/ decode encode_utf8 /; use HTML::TreeBuilder; use LWP::UserAgent; my $ua = LWP::UserAgent->new(); my $response = $ua->get( "http://namazu.org/~tsuchiya/" ); if( $response->is_success ){ my $tree = HTML::TreeBuilder->new; $tree->parse( encode_utf8( decode( "iso-2022-jp", $response->content ) ) ); # print $tree->as_HTML; print decode_utf8( $tree->as_text ); }
HTML::Parser �⥸�塼��� handler ��Ŭ�ڤ����ꤹ��Ф����Τ��⤷��ʤ���
NDO::Weblog
�ε��Ҥˤ��С����Τ�����Ǥ���餷�����Ȥꤢ������encode_utf8
��Ƥ�ǡ���� UTF-8 �ʥХ�����ˤ��Ƥ��� parse ���ʤ���Фʤ�ʤ��褦����
������ˡ�ǡ�����Ū�� encode/decode ���뤳�Ȥˤ�ꡤas_text()
��åɤǤν��ϤϽ����褦�ˤʤä���as_HTML()
�����Ѥ����ꡤ
Ʃ��Ū�˽�����Ԥ���ˡ���ޤ�ʬ����ʤ���
[Top] / [��λȤäƤ��� Perl Scripts] / [Perl-5.8 �Ф���]