Schrift
[thread]3677[/thread]

dateien aus dem verzeichnis lesen

Leser: 1


<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten
shaihulud
 2006-04-12 17:50
#34266 #34266
User since
2006-04-12
76 Artikel
BenutzerIn
[default_avatar]
Hi,

problem ist. ich hab ein verzeichnis mit mehreren verschiedenen dateiarten drinnen. ich möchte nun das zb. alle dateien mit der endung .a00 gespeichert werden. zb in nem array oder egal was. wie kann ich das machen?

open(DATEI, "<*.a00");
// hier den namen der vor dem .a00 steht (nennen wir die datei mal xxx.a00) in nen array packen oder so zb. push(@namen,xxx)
close(DATEI);

hab nicht den hauch einer ahnung wie ich an das problem rangehn könnte.

bin für jeden vorschlag sehr dankbar

greez shaihulud
master
 2006-04-12 17:51
#34267 #34267
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Ganz klar: Glob...

Code: (dl )
@arry = glob('verz/*.a00');
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
master
 2006-04-12 17:54
#34268 #34268
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Du kannst auch die funktion Opendir nutzen

Die Endung kannst du dann mit ner regexp. lesen.
Es gibt auch ein Standardmodul mit dem kann man einen Dateinamen zerlegen in Pfad, Name, Endung..

File::Basename\n\n

<!--EDIT|master|1144850129-->
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
Ronnie
 2006-04-12 17:55
#34269 #34269
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
perl -e 'print $_, "\n" for map {/(.*)\.html/; $1}  <*.html>'

wenn du alle Datei-Namen ohne Endung in einem Array haben möchtest:
Code: (dl )
1
2
my @files = <*.a00>;
my @names = map {/(.*)\.html/; $1} @files;

EDIT: Aufgabenstellung nochmal gelesen.\n\n

<!--EDIT|Ronnie|1144850903-->
master
 2006-04-12 18:02
#34270 #34270
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
use File::Basename;

my @namendavor =();
my @arry = glob('verz/*.a00');

for(@arry)
{
($name,$path,$suffix) = fileparse($fullname,@suffixlist)
print "$name\n";
push(@namendavor,$name);
}
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
master
 2006-04-12 18:15
#34271 #34271
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
ps. Nutz am besten das Standardmodul.
Es ist ein Perl-Modul und standardmässig dabei.
Das kommt besser als mit einer eigenen regexp.

use File::Basename;\n\n

<!--EDIT|master|1144851341-->
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
renee
 2006-04-12 19:33
#34272 #34272
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Oder CPAN:File::Glob...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
shaihulud
 2006-04-14 16:45
#34273 #34273
User since
2006-04-12
76 Artikel
BenutzerIn
[default_avatar]
ich hab diesen Lösungsvorschlag mal versucht, aber er gibt mir als fehlermeldung an:
fileparse(): need a valid pathname at functions.pm line 28
aber ich will kein spezifisches verzeichnis angeben sondern es soll immer das verzeichnis sein in dem das programm ausgeführt wird. wie kann ich das machen?

use File::Basename;

my @namendavor =();
my @array = glob('*.a00');

for(@array)
{
($name,$path,$suffix) = fileparse($fullname,@suffixlist); //line 28
print "$name\n";
push(@namendavor,$name);
}
Dubu
 2006-04-14 17:05
#34274 #34274
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Ersetze
Code: (dl )
for (@array)

durch
Code: (dl )
for my $fullname (@array)

.
shaihulud
 2006-04-14 17:23
#34275 #34275
User since
2006-04-12
76 Artikel
BenutzerIn
[default_avatar]
hm... also das programm hat in $name einfach den kompletten dateinamen drin stehn. mit split zb könnte ich alles vor .a00 speichern, aber wisst ihr ne bessere möglichkeit wie ich den teil kriege?
das ist ja eigentlich mein ziel...
<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten



View all threads created 2006-04-12 17:50.