2011-03-05 11 views
5

क्या पर्ल '..' ऑपरेटर का उपयोग कर यूटीएफ -8 वर्णमाला सरणी बनाने का कोई तरीका है?utf-8 वर्णमाला बनाने के लिए मैं श्रेणी ऑपरेटर '..' का उपयोग कैसे कर सकता हूं?

उदाहरण के लिए, यह एक काम नहीं करेगा:

$ cat t.pl 
#!/usr/bin/perl 

use Data::Dumper; 
use encoding 'utf8'; 

print Dumper('А'..'Я'); # not working! 
print Dumper('А','Б','В'); # ...works fine! but needs to be filling letter by letter 

$ perl t.pl 
$VAR1 = "\x{410}"; 
$VAR1 = "\x{410}"; 
$VAR2 = "\x{411}"; 
$VAR3 = "\x{412}"; 

$ echo $LANG 
en_US.UTF-8 

किसी भी सलाह?

+1

एन्कोडिंग प्रागमा के बारे में सलाह: http://stackoverflow.com/q/492838#493508 – daxim

उत्तर

15

यह उल्लेख किया गया है - संक्षेप में - range operator docs में। आप ord और chr कार्यों का उपयोग करने की आवश्यकता है:

#!/usr/bin/perl 

use Data::Dumper; 
use encoding 'utf8'; 

my @arry = map { chr } ord('А') .. ord('Я'); 
for my $letter (@arry) { 
    print "$letter "; 
} 
print "\n"; 

आउटपुट:

А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я 

परिणाम आप देख उठता है क्योंकि श्रेणी का प्रारंभिक मूल्य एक 'जादुई' अनुक्रम का हिस्सा (नहीं है /^[a-zA-Z]*[0-9]*\z/ से मेल खाने वाली एक गैर-खाली स्ट्रिंग), इसलिए ऑपरेटर केवल प्रारंभिक मान देता है।

संबंधित मुद्दे

 संबंधित मुद्दे