Article View: pl.comp.lang.perl
Article #52214[[:word:]] kontra \w i locale
From: Michal Jankowski
Date: Sat, 23 Apr 2011 08:52
Date: Sat, 23 Apr 2011 08:52
55 lines
2472 bytes
2472 bytes
Bierzemy dokumentację:
The POSIX character class syntax
[:class:]
is also available. The available classes and their
backslash equivalents (if available) are as follows:
digit \d
space \s [2]
word \w [3]
Fine. Equivalent. A zawsze \w to mniej pisania, prawda? No to go lu.
----------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use utf8;
use open ':utf8', ':std';
my $s = 'abąćłó_,.';
for (split('', $s)) {
print "$_ ";
print /[[:word:]]/? 'T' : 'F', ' ', /\w/? 'T' : 'F', ' ';
{
use locale;
print /[[:word:]]/? 'T' : 'F', ' ', /\w/? 'T' : 'F', ' ';
}
{
use locale;
use POSIX;
setlocale(LC_ALL, "C");
print /[[:word:]]/? 'T' : 'F', ' ', /\w/? 'T' : 'F', ' ';
}
print "\n";
}
----------------------------------------------------------------------
A oto wynik:
a T T T T T T
b T T T T T T
ą T T T T T T
ć T T T T T T
ł T T T T T T
ó T T T F T F
_ T T T T T T
, F F F F F F
. F F F F F F
----------------------------------------------------------------------
Akuku!
Pierwsze zaskoczenie - 'use locale' powoduje, że o z kreską przestaje
być \w, ale nie przestaje być [:word:].
Drugie zaskoczenie - że kompletnie nie zależy to od tego, jakie
'locale' ustawimy.
A trzecie zaskoczenie, że w ogóle bez użycia 'locale' litery z ogonkami
są w klasie [:word:] (oraz [:alpha:]). Oczekiwałbym w takim miejscu
równoważności [[:alpha:]] i [A-Za-z].
Zdziwniej i zdziwniej.
MJ
Technical Details
Message-ID:
<kjzaafhnyce.fsf@ccfs1.fuw.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!uw.edu.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!uw.edu.pl!not-for-mail From: Michal Jankowski <michalj@fuw.edu.pl> Newsgroups: pl.comp.lang.perl Subject: [[:word:]] kontra \w i locale Date: Sat, 23 Apr 2011 10:52:49 +0200 Organization: Warsaw University, Physics Department Lines: 57 Message-ID: <kjzaafhnyce.fsf@ccfs1.fuw.edu.pl> NNTP-Posting-Host: ccfs1.fuw.edu.pl Mime-Version: 1.0 X-Trace: h1.uw.edu.pl 1303548775 23634 193.0.81.21 (23 Apr 2011 08:52:55 GMT) X-Complaints-To: usenet@news.uw.edu.pl NNTP-Posting-Date: 23 Apr 2011 08:52:55 GMT User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3 (usg-unix-v) Cancel-Lock: sha1:9dXtn9C9FFedpjyBwZK5JFzfmEE= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit