Konsol direka bentuk untuk menggunakan UTF8, dan fon yang dipaparkan juga buruk Apakah yang perlu kita lakukan apabila program Perl dan fail yang akan dibaca oleh Perl menggunakan pengekodan UTF8? Mari kita lihat prosedur berikut terlebih dahulu:
#!/usr/bin/perl
gunakan pengekodan 'utf8', STDIN=>'gb2312', STDOUT=>'gb2312';
open(FILE,"c:\test1.txt");
binmode(FILE,":encoding(utf8)");
@lines=
tutup(FAIL);
untuk($i=0; $i
cetak $garisan[$i];
cetak "n";
}
$str="Helo";
cetak $str;
Atur cara ini menggunakan Perl untuk membaca fail teks test1.txt, dan kemudian memaparkannya pada konsol. Kuncinya ialah:
1. gunakan pengekodan 'utf8', STDIN=>'gb2312', STDOUT=>'gb2312';
gunakan pengekodan 'utf8': Tentukan format pengekodan fail skrip sebagai utf8;
STDIN=>'gb2312', STDOUT=>'gb2312': Input dan output menggunakan set aksara GB2312.
Dengan cara ini, aksara Cina dalam skrip Perl boleh dikeluarkan.
2:binmode(FILE,":encoding(utf8)");
Nyatakan format pengekodan FAIL fail yang dibuka sebagai utf8, supaya data boleh dibaca ke dalam @lines dengan betul.
Ini membolehkan Perl memproses aksara UTF8 pada konsol Windows.
Tiga kaedah tersebut adalah seperti berikut:
#!/bin/perl -w
gunakan ketat;
my $str = "abcsfsaf#sdagasdga#sdgaghoiiopjh#dsfjkopa hkl;fjh#dsjfklpafj";
############ Kaedah 1
$pos saya = -1;
my $num = 0;
sementara (($pos = indeks($str, "#", $pos)) >-1) {
cetak "ditemui di $posn";
$pos++;
$num++;
}
cetak "Terjumpa $num!n";
#################################################### ###########
#Kaedah 2
kiraan $saya = 0;
sementara( $str =~ /#/g )
{
$count++;
}
cetak $count,"n";
############################################
# Kaedah 3
$cc saya = 0;
$tmp saya = 0;
jika( $tmp = () = ($str =~ /#/g ) )
{
$cc += $tmp;
}
cetak "$ccn";
#/usr/bin/perl
buka (IN, 'D:\words.txt ') ||
@words=();dekat MASUK;
buka (KELUAR,'>','D:\wordlist.txt')atau mati $!;
foreach $line(@words){
$line=~s/n//g;
@words=split /s+/,$line;
foreach $word(@words){
$perkataan=~s/W+//;
$freq {$word}++;
cetak $perkataan ."=>".$freq{$perkataan}."n";
}
}
tutup KELUAR;
Anda boleh mencuba program ini, fail boleh membaca teks asal terus tanpa perlu menulis perkataan setiap baris! Jika anda mempunyai sebarang pertanyaan, sila hubungi kami!
Ajar soalan program perl: baca kandungan daripada fail dan kandungannya ialah beberapa teks berturut-turut
gunakan ketat;
mati "perl $0 " melainkan(@ARGV==1);
buka (IN,$ARGV[0]) atau mati "Tidak dapat membuka fail $ARGV[0]!n";
buka (KELUAR,">data2") atau mati "Tidak dapat mencipta fail data2n";
semasa(){
chomp;
my @tmp=split /t/,$_;
untuk(my $tmpc=1;$tmpcif($tmp[$tmpc-1] eq $tmp[$tmpc]){
cetak "$tmp[$tmpc-1]@2t@@@";
$tmpc++;
seterusnya;
}
cetak "t$tmp[$tmpc-1]";
}
cetak KELUAR"n";
}
Atas ialah kandungan terperinci Cara mengendalikan UTF8 dengan Perl pada konsol Windows. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!