Re: Výpis adreseře na win32 v DOS konvenci

Martin Sittek mailing-list na infoprojekt.cz
Čtvrtek Srpen 14 11:14:20 MEST 2003


Dík za názor, také jsem původně uvažoval že si ty názvy nějak podobně
odvodím ale jen do doby než jsme zjistil, že může existovat soubor~2 aniž by
existovat soubor~1. Konkrétně když si vytvořím třeba adresář "hokuspokus" a
kouknu na `dir`, pak vidím "HOKUSP~1", pak jej přejmenuji třeba na
"hokuspokusx" a zase kouknu na `dir` a vidím "HOKUSP~2" aniž by existoval
"HOKUSP~1". Pak Váš program nebude fungovat správně.

Martin Sittek

----- Původní zpráva -----
Od: "Frantisek Darena" <darena na akela.mendelu.cz>
Komu: "Multiple recipients of list PERL" <perl na muni.cz>
Odesláno: 14. srpna 2003 10:47
Předmět: Re: Výpis adreseře na win32 v DOS konvenci


>
>
> On Tue, 12 Aug 2003, Martin Sittek wrote:
>
> > Zdravím vespolek,
> >
> > potřeboval bych na win32 (ActiveState) vypsat obsah adresáře ovšem v tom
> > klasickém DOS formátu - včetně zkrácených jmen. Čili takové to
> > "hokus~1.txt". Bohužel se mi pořád nedaří nalézt nějakou jednodušší
cestu
> > než to přežvýkávat z výpisu `dir` příkazu.
>
> Dobry den, muzete pouzit funkce opendir a readdir, ale ta jmena je asi
> potreba upravit rucne. Uvedeny priklad mi funguje, primo ta jmena
> vypisuju na konci toho cyklu.
> F. Darena
>
>
> my %files = ();
>
> opendir D, "$jmeno_adresare";
> while ($_ = readdir D) {
> my $pripona;
> my $jmeno;
>
> $pripona = $& if /\.[^.]+$/;;
>
> $pripona?$jmeno = $`:$jmeno = $_;
>
> if (length $jmeno > 8) {
> /.{6}/;
> print $&.'~'.++$files{$&}.($pripona?$pripona:'');
> } else {
> print;
> }
> }




Další informace o konferenci Perl