SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] Brug globbing til wild card emulering



On Wed, 17 May 2000, Jan Eggert Kofoed wrote:

> Jeg har er ved at lave Perl programmer, som skal filtrere filer, og
> dette
> skulle gerne kunne lade sig gøre ved at benytte wild cards på samme
> måde som en shell gør det. Jeg ville gerne undgå at stole på shellen,
> for nogle af mine brugere har benytter ikke bash på Windows platformen.

Da jeg skulle skrive noget perl til Windows fulgte der et program
med i perl-pakken: glob.exe. Gør der stadig det?

> Jeg kan godt få fat på filnavne (parse_dir). Hvordan checker jeg, om
> filnavnet
> opfylder regexp angivet ved wild card? For eksempel ville jeg godt kunne
> 
> skrive noget i retning af
>     perl -TSw jk.pl "*2*.pl"

Hvis du bruger glob.exe, kan du som første linje skrive:

  @ARGV=<eval $ARGV[0]>;

Dette vil evaluere det første argument på kommandolinjen og derefter 
benytte csh eller glob.exe til at expande, slutteligt putte resultatet ind
i @ARGV, så det for perl "ser ud som om" de stod på kommando linjen.

Hvis du vil have lov at skrive:

  perl -TSw jk.pl "*2*.pl" abc.txt "ole?????.pl" ...

skal du ud i noget ala:

  @sslug@sslug; @ARGV=();
  for(@e) { push(@ARGV,<eval $_>); }

Hvis glob.exe ikke længere findes til Windows, så prøv lige at checke CPAN
om de ikke har en globbing-ting.

Hvis du absolut _vil_ regexpe, så skal du konvertere alle globbings til
regexps:

  ?           = .
  {a,bc}      = (a|bc)
  *           = .*
  [a-f]       = [a-f]
  tegn        = \tegn 

Det overlades til en øvelse til læseren at få lavet en 100% korrekt
implementation. Jeg lugter bøvl, når man skal finde ud af, om [ har en
speciel betydning: [a-f] eller ingen speciel betydning: [a-f (uden ]).


/Ole





 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:52
Denne side vedligeholdes af MHonArc .