Predefinovani operatoru 'cmp'

Pavel Rosicky rosicky na euromise.cz
Pátek Říjen 2 16:08:02 MEST 1998




> Pavel Rosicky Wed, Sep 30, 1998 at 02:25:48PM +0200 pise:
> >
> >
> >
> > > > nevite nekdo jestli, pripadne jak, je mozno predefinovat operator 'cmp'
> > > > tak, aby se choval napriklad jako funkce 'czcmp' z modulu Cz:Sort ?
> > >
> > >    Nestaci pustit Perl s parametrem -Mlocale nebo na zacatek skriptu
> > > pridat use locale; ? Samozrejme musite mit funkcni locales...
> > >
> >
> > To samozrejme staci, ale prave pouziti locales jsem se chtel vyhnout...
>
> funkce se daji pretizit pomoci use subs '..';
>
> neni neco podobneho i pro operatory ? ja si teda na nic nevzpominam, ale ..
>
> milan sorm
>

Smiril jsem se s tim, ze operator 'cmp' se mi predefinovat nepodari. Misto toho
jsem zkusil pouzit vyse naznaceny postup s "use subs " k predefinovani funkce
'sort'. Zjistil jsem, ze sice muzu predefinovat funkce jako 'open' nebo
'reverse', ale funkci 'sort' se mi proste predefinovat nepodarilo. Pro zajimavost
uvadim dotycny skript v (temer) nezkracenem zneni:

use Cz::Sort;
use subs qw(open sort);
@pole  =  (......); #nejaka ceska slova
@vysl1 = sort @pole;
@vysl2 = open @pole;
$,="\n";
print @vysl1;
print "\n";
print @vysl2;

sub sort {
  czsort(@_);
}
sub open {
  czsort(@_);
}

Zatimco 'open' se po predefinovani chova tak jak by clovek ocekaval (tj. jako
czsort), 'sort' se chova stale stejne jako puvodni 'sort'.



Další informace o konferenci Perl