Schrift
[thread]419[/thread]

Datei auslesen und erste Zeile löschen: Die erste zeile löschen

Leser: 2


<< >> 6 Einträge, 1 Seite
Kuschelroboter
 2005-01-30 02:19
#4254 #4254
User since
2005-01-30
3 Artikel
BenutzerIn
[default_avatar]
Hallo,
erstmal grüß Gott zusammen, ich bin neu hier im Forum und anfänger was Perl angeht.

Ich habe gleich ein problemchen:

Ich habe eine Textdatei in der mehrere Zeilen mit adressen stehen.
Nun brauche ich ein Script welches beim Aufruf die erste zeile ausliest und diese über return an mein Programm zurück gibt.
in der Textdatei soll dabei die erste Zeile dann gelöscht werden so das die 2. nachrückt.

besonders weit bin ich da nicht :)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
sub adresse_get_next {
print "Neue Adresse wird gezogen:\n";
my $dateiname = "/home/htdocs/files/adress.txt";
open(DATEI, '<'.$dateiname) or die "Kann $dateiname nicht öffnen";
while(<DATEI>)
{
my $zeile = chomp($_);
# was nun??????????????????????
}
close(DATEI);
return "Hier soll die Adresse übergeben werden";
}
betterworld
 2005-01-30 04:56
#4255 #4255
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Hallo,

versuch mal das hier:
Code: (dl )
1
2
3
4
5
6
7
8
9
use strict;
use warnings;
use Tie::File;

sub adresse_get_next {
my @array;
tie @array, "Tie::File", "/home/htdocs/files/adress.txt";
return shift @array;
}


Das ist nun ein ganz anderer Ansatz... Das Problem bei Deinem Ansatz ist, dass Du mit einer while(<>)-Schleife die Datei nur auslesen, aber nicht veraendern kannst.

Und noch etwas zu Deinem Ansatz:
Quote
Code: (dl )
my $zeile = chomp($_)

Bitte beachte, dass der Rueckgabewert von chomp nicht der String ist, auf den Du chomp loslaesst. Chomp veraendert den String nur.
[E|B]
 2005-01-30 13:08
#4256 #4256
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Code: (dl )
string chomp(string [, string])


chomp() und chop() liefern jeweils als Rückgabewert nur das abgeschnittene Zeichen.
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Kuschelroboter
 2005-01-30 15:53
#4257 #4257
User since
2005-01-30
3 Artikel
BenutzerIn
[default_avatar]
hi, ich habs nun mal mit dem Code versucht den betterworld geschrieben hat.
nun meckert er allerdings
perl error: Can't locate object method "TIEARRAY" via package "Tie::File"

installiert ist Perl 5.8.3 und das Modul Tie::File ist auch drin.
Was mach ich da falsch?
renee
 2005-01-30 16:28
#4258 #4258
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du den Code per Copy&Paste genommen? Wenn nein, dann poste bitte Deinen Code (mit Copy&Paste)
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/
Kuschelroboter
 2005-01-30 16:46
#4259 #4259
User since
2005-01-30
3 Artikel
BenutzerIn
[default_avatar]
Hi Renee,
nein ich hatte ihn nicht kopiert.
Hab den Fehler aber schon gefunden,
was ein kleiner schreibfehler so alles anrichten kann :)

Nun rennt es so wie ich es haben wollte.

Danke nochmal an alle Helfer.

Kuschelroboter
<< >> 6 Einträge, 1 Seite



View all threads created 2005-01-30 02:19.