/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Filnavne og datoer...
Fra : Rander


Dato : 24-09-02 21:18

To spørgsmål:

Hvordan får man Perl til at finde en del af et filnavn?

Hvis man f.ex. har en fil der hedder "fil 212.txt", hvordan får man den så
til at finde tallet 212?

Og inden i siger "underligt spørgsmål", så handler det om at jeg hver uge
får en fil hvor filnavnet består af en fast del, et mellemrum, et nummer og
en fast extension!

Det andet spørgsmål: Kan man få Perl til automatisk at finde datoen for
f.ex. førstkommende fredag?

--
Lars Rander, www.rander.dk ICQ#: 987520 ** Pil ikke ved min adresse **
Sjathelt og beskytter af det svage køn (udnævnt af diktator SEJ 5/6-99)

Det er ikke klogt at være klogere end nødvendigt. (Philippe Quenault)


 
 
Kim Hansen (24-09-2002)
Kommentar
Fra : Kim Hansen


Dato : 24-09-02 22:08

Rander <lrNOSPAM@rander.dk> writes:

> To spørgsmål:
>
> Hvordan får man Perl til at finde en del af et filnavn?
>
> Hvis man f.ex. har en fil der hedder "fil 212.txt", hvordan får man den så
> til at finde tallet 212?
>
> Og inden i siger "underligt spørgsmål", så handler det om at jeg hver uge
> får en fil hvor filnavnet består af en fast del, et mellemrum, et nummer og
> en fast extension!

my $fil = "fil 212.txt";
my ($fast,$nummer,$ext) = $fil =~ /(.+) (\d+)\.(.+)/;

> Det andet spørgsmål: Kan man få Perl til automatisk at finde datoen for
> f.ex. førstkommende fredag?

Prøv at kigge på CPAN efter noget med Date, der må være nogen der har
løst det før.

--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-'`' -. ;-;;,_ | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Phone: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.

wulff (24-09-2002)
Kommentar
Fra : wulff


Dato : 24-09-02 22:19

On 24 Sep 2002 23:07:34 +0200, Kim Hansen <k-tahf.qvxh@oek.dk> wrote:
>> Det andet spørgsmål: Kan man få Perl til automatisk at finde datoen for
>> f.ex. førstkommende fredag?
>Prøv at kigge på CPAN efter noget med Date, der må være nogen der har
>løst det før.

Mon ikke Date::Calc er et godt bud? Kig på opskrift 8 i
dokumentationen:

http://www.perldoc.com/cpan/Date/Calc.html#RECIPES


hth

/wulff

Rander (24-09-2002)
Kommentar
Fra : Rander


Dato : 24-09-02 23:36

24 Sep 2002 23:07:34 +0200 brugte Kim Hansen 27 linier på at fortælle dette
til dk.edb.programmering.perl:

>> Hvis man f.ex. har en fil der hedder "fil 212.txt", hvordan får man den så
>> til at finde tallet 212?
[...]
>my $fil = "fil 212.txt";
>my ($fast,$nummer,$ext) = $fil =~ /(.+) (\d+)\.(.+)/;

Mjoh... Det virkede da jeg kombinerede det med en anden kodestump jeg
fandt, så jeg endte op med

open(FILES, "/usr/bin/find . -name 'fil*.txt' -print |") or die "$!";
$filename = <FILES>;
my ($fast,$nummer,$ext) = $filename =~ /(.+) (\d+)\.(.+)/;

Så den del er løst.

>> Det andet spørgsmål: Kan man få Perl til automatisk at finde datoen for
>> f.ex. førstkommende fredag?
>Prøv at kigge på CPAN efter noget med Date, der må være nogen der har
>løst det før.

Det er der også! Date::Calc som Wulff anbefalede var løsningen!

--
Lars Rander, www.rander.dk ICQ#: 987520 ** Pil ikke ved min adresse **
Sjathelt og beskytter af det svage køn (udnævnt af diktator SEJ 5/6-99)

Jeg har flere gange modtaget breve fra embedsmænd, som jeg har været
nød til at tygge igennem både én og to gange. (Søndagsavisen)


Dennis Haney (25-09-2002)
Kommentar
Fra : Dennis Haney


Dato : 25-09-02 09:04

Rander <lrNOSPAM@rander.dk> writes:

> 24 Sep 2002 23:07:34 +0200 brugte Kim Hansen 27 linier på at fortælle dette
> til dk.edb.programmering.perl:
>
> >> Hvis man f.ex. har en fil der hedder "fil 212.txt", hvordan får man den så
> >> til at finde tallet 212?
> [...]
> >my $fil = "fil 212.txt";
> >my ($fast,$nummer,$ext) = $fil =~ /(.+) (\d+)\.(.+)/;
>
> Mjoh... Det virkede da jeg kombinerede det med en anden kodestump jeg
> fandt, så jeg endte op med
>
> open(FILES, "/usr/bin/find . -name 'fil*.txt' -print |") or die "$!";
> $filename = <FILES>;
> my ($fast,$nummer,$ext) = $filename =~ /(.+) (\d+)\.(.+)/;

eller bare
@files=<fil*.txt>;
foreach (@files) {
/fil (.*?)\.txt/;
#gør hvad du vil med $1
}

>

--
Dennis
I have always thought explanations were overkill when correcting
mistakes. A simple "that's wrong" must suffice. I mean, people are
always aware why they are wrong. They just make mistakes to annoy you.

Lars Balker Rasmusse~ (25-09-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 25-09-02 09:11

Dennis Haney <davh@diku.dk> writes:
> Rander <lrNOSPAM@rander.dk> writes:
> > open(FILES, "/usr/bin/find . -name 'fil*.txt' -print |") or die "$!";
> > $filename = <FILES>;

> @files=<fil*.txt>;

HVIS fil*.txt'erne ligger i PWD, eller gør de to ganske forskellige ting.
--
Lars Balker Rasmussen                  "S.M.R.T."

Dennis Haney (25-09-2002)
Kommentar
Fra : Dennis Haney


Dato : 25-09-02 09:20

Lars Balker Rasmussen <lars@balker.org> writes:

> Dennis Haney <davh@diku.dk> writes:
> > Rander <lrNOSPAM@rander.dk> writes:
> > > open(FILES, "/usr/bin/find . -name 'fil*.txt' -print |") or die "$!";
> > > $filename = <FILES>;
>
> > @files=<fil*.txt>;
>
> HVIS fil*.txt'erne ligger i PWD, eller gør de to ganske forskellige ting.

Nåh, ja, lille detalje.. Skulle så selvfølgelig være
@files=(<./**/fil*.txt>,<./fil*.txt>);

--
Dennis
I have always thought explanations were overkill when correcting
mistakes. A simple "that's wrong" must suffice. I mean, people are
always aware why they are wrong. They just make mistakes to annoy you.

Lars Balker Rasmusse~ (25-09-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 25-09-02 10:02

Dennis Haney <davh@diku.dk> writes:
> Lars Balker Rasmussen <lars@balker.org> writes:
> > Dennis Haney <davh@diku.dk> writes:
> > > Rander <lrNOSPAM@rander.dk> writes:
> > > > open(FILES, "/usr/bin/find . -name 'fil*.txt' -print |") or die "$!";
> > > > $filename = <FILES>;
> >
> > > @files=<fil*.txt>;
> >
> > HVIS fil*.txt'erne ligger i PWD, eller gør de to ganske forskellige ting.
>
> Nåh, ja, lille detalje.. Skulle så selvfølgelig være
> @files=(<./**/fil*.txt>,<./fil*.txt>);

% find . -name '*.txt'
../foo/bar/fil2.txt
../foo/fil1.txt

% perl -le 'print join "\n", (<./**/fil*.txt>,<./fil*.txt>)'
../foo/fil1.txt
--
Lars Balker Rasmussen "Special is bad."

Dennis Haney (26-09-2002)
Kommentar
Fra : Dennis Haney


Dato : 26-09-02 08:29

Lars Balker Rasmussen <gnort@daimi.au.dk> writes:

> Dennis Haney <davh@diku.dk> writes:
> > Lars Balker Rasmussen <lars@balker.org> writes:
> > > Dennis Haney <davh@diku.dk> writes:
> > > > Rander <lrNOSPAM@rander.dk> writes:
> > > > > open(FILES, "/usr/bin/find . -name 'fil*.txt' -print |") or die "$!";
> > > > > $filename = <FILES>;
> > >
> > > > @files=<fil*.txt>;
> > >
> > > HVIS fil*.txt'erne ligger i PWD, eller gør de to ganske forskellige ting.
> >
> > Nåh, ja, lille detalje.. Skulle så selvfølgelig være
> > @files=(<./**/fil*.txt>,<./fil*.txt>);
>
> % find . -name '*.txt'
> ./foo/bar/fil2.txt
> ./foo/fil1.txt
>
> % perl -le 'print join "\n", (<./**/fil*.txt>,<./fil*.txt>)'
> ./foo/fil1.txt

Du bruger en af de gamle perl der brugte shell'en til at lave globs?
Og så oveni det en meget underlig shell, for selv den latterlige sunos
sh gør det rigtige...

$ find . -name '*.txt'
../bar/fil02.txt
../fil01.txt
$ perl -le 'print join "\n", (<./**/fil*.txt>,<./fil*.txt>)'
../bar/fil02.txt
../fil01.txt

perl ver 5.6.0, checket både på en RH7.1 og en HPUX11 og sunos 5.8

--
Dennis
I have always thought explanations were overkill when correcting
mistakes. A simple "that's wrong" must suffice. I mean, people are
always aware why they are wrong. They just make mistakes to annoy you.

Lars Balker Rasmusse~ (26-09-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 26-09-02 10:41

Dennis Haney <davh@diku.dk> writes:
> > % find . -name '*.txt'
> > ./foo/bar/fil2.txt
> > ./foo/fil1.txt
> >
> > % perl -le 'print join "\n", (<./**/fil*.txt>,<./fil*.txt>)'
> > ./foo/fil1.txt
>
> Du bruger en af de gamle perl der brugte shell'en til at lave globs?
> Og så oveni det en meget underlig shell, for selv den latterlige sunos
> sh gør det rigtige...
>
> $ find . -name '*.txt'
> ./bar/fil02.txt
> ./fil01.txt
> $ perl -le 'print join "\n", (<./**/fil*.txt>,<./fil*.txt>)'
> ./bar/fil02.txt
> ./fil01.txt
>
> perl ver 5.6.0, checket både på en RH7.1 og en HPUX11 og sunos 5.8

Prøv igen - jeg havde et directory-niveau mere på.

% uname -a ; perl -v
SunOS ardbeg 5.9 Generic sun4u sparc SUNW,Ultra-1

This is perl, v5.6.1 built for sun4-solaris-64int
[...]

Jeg ved ikke hvad du regner med ** skulle betyde.
--
Lars Balker Rasmussen                  "S.M.R.T."

Dennis Haney (26-09-2002)
Kommentar
Fra : Dennis Haney


Dato : 26-09-02 14:55

Lars Balker Rasmussen <lars@balker.org> writes:

> Dennis Haney <davh@diku.dk> writes:
> > > % find . -name '*.txt'
> > > ./foo/bar/fil2.txt
> > > ./foo/fil1.txt
> > >
> > > % perl -le 'print join "\n", (<./**/fil*.txt>,<./fil*.txt>)'
> > > ./foo/fil1.txt
> >
> > Du bruger en af de gamle perl der brugte shell'en til at lave globs?
> > Og så oveni det en meget underlig shell, for selv den latterlige sunos
> > sh gør det rigtige...
> >
> > $ find . -name '*.txt'
> > ./bar/fil02.txt
> > ./fil01.txt
> > $ perl -le 'print join "\n", (<./**/fil*.txt>,<./fil*.txt>)'
> > ./bar/fil02.txt
> > ./fil01.txt
> >
> > perl ver 5.6.0, checket både på en RH7.1 og en HPUX11 og sunos 5.8
>
> Prøv igen - jeg havde et directory-niveau mere på.

Det havde du søreme også...

>
> % uname -a ; perl -v
> SunOS ardbeg 5.9 Generic sun4u sparc SUNW,Ultra-1
>
> This is perl, v5.6.1 built for sun4-solaris-64int
> [...]
>
> Jeg ved ikke hvad du regner med ** skulle betyde.

Du har ret. Jeg er blevet for vant til min zsh.

--
Dennis
I have always thought explanations were overkill when correcting
mistakes. A simple "that's wrong" must suffice. I mean, people are
always aware why they are wrong. They just make mistakes to annoy you.

R. A. Larsen (25-09-2002)
Kommentar
Fra : R. A. Larsen


Dato : 25-09-02 08:32

In article <8st66-rpr.ln1@rander.dk>, Rander wrote:
>
> To spørgsmål:
>
> Hvordan får man Perl til at finde en del af et filnavn?
>
> Hvis man f.ex. har en fil der hedder "fil 212.txt", hvordan får man den så
> til at finde tallet 212?
>
> Og inden i siger "underligt spørgsmål", så handler det om at jeg hver uge
> får en fil hvor filnavnet består af en fast del, et mellemrum, et nummer og
> en fast extension!

Du kan bruge noget lignende:

if ($filnavn =~ /^fast_del (\d+)\.fast_ext$/) {
$nummer = $1;
...
}

Se i "perldoc perlre" for nærmere oplysninger om "regular expressions" (hvad er egentlig
det danske navn?).

MVH, René


Kim Hansen (25-09-2002)
Kommentar
Fra : Kim Hansen


Dato : 25-09-02 08:37

R. A. Larsen <rene.larsen@spamfilter.dk> writes:

> Se i "perldoc perlre" for nærmere oplysninger om "regular
> expressions" (hvad er egentlig det danske navn?).

Regulære udtryk

--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-'`' -. ;-;;,_ | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Phone: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.

Lars Balker Rasmusse~ (25-09-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 25-09-02 08:38

R. A. Larsen <rene.larsen@spamfilter.dk> writes:
> "regular expressions" (hvad er egentlig det danske navn?).

Regulære udtryk.
--
Lars Balker Rasmussen                  "S.M.R.T."

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste