|
| 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."
| |
|
|