🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #52214

[[:word:]] kontra \w i locale

#52214
From: Michal Jankowski
Date: Sat, 23 Apr 2011 08:52
55 lines
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-mail

Show 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