Zeilenanfang in einem regulaeren Ausdruck
am 07.02.2007 12:31:17 von unknownPost removed (X-No-Archive: yes)
Post removed (X-No-Archive: yes)
Stefan Ram wrote:
> Mit anderen Worten: Perl verhält sich so, als hätte ich noch
> den Modifizierer »m« angegeben; das »^« steht für den Anfang
> des gesamten Textes und nicht einer Zeile. Ich habe aber nicht
> »m« verwendet.
>
> Nun kann ich ja damit leben, alle regulären Ausdrücke so zu
> schreiben, als hätte ich »m« verwendet, würde aber gerne
> auch verstehen, warum dies nötig ist.
Es ist eben so.
^ steht für den Anfang der Zeichenkette.
Wenn Du möchtest, dass es für den Anfang jeder Zeile
in der Zeichenkette steht, musst Du den Modifier m angeben.
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Post removed (X-No-Archive: yes)
Post removed (X-No-Archive: yes)
Stefan Ram schrieb:
> Aha! Dann habe ich es genau verwechselt und war mir zu sicher,
> um nachzulesen. Danke!
....aber so unsicher, hier nachzufragen.
J.
Joergen Lang wrote:
> Stefan Ram schrieb:
>>
>> Aha! Dann habe ich es genau verwechselt und war mir zu sicher,
>> um nachzulesen. Danke!
>
> ...aber so unsicher, hier nachzufragen.
....oder sehr sicher, dass es ein Bug in Perl sein muss ;-)
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Stefan Ram schrieb:
> sub getfile($)
> { my $old = $/;
> my $source;
> my $result;
> undef $/;
> if( open( $source, '<' . @_[0] ))
> { $result = <$source>;
> close( $source ); }
> $/ = $old;
> return $result; }
Wenn wir schon am Verbessern sind:
sub getfile {
my $result;
if( open(my $source, '<', $_[0]) ) {
local $/;
$result = <$source>;
close $source;
}
return $result;
}
__END__
- use warnings, dann bemerkst du sowas wie @_[0]
- perldoc -f local
- ich weiß grade gar nicht, wann das 3-arg open eingeführt wurde, aber es
ist gewiss schon vor 2000 gewesen
- weißt du, was der $-Prototype macht? Wenn nicht, dann lass ihn weg.
- close wird noch nicht auf Erfolg geprüft ...
Grüße, Frank
* Frank Wiegand [2007-02-07]:
Hallo Frank,
> Wenn wir schon am Verbessern sind:
> sub getfile {
> my $result;
> if( open(my $source, '<', $_[0]) ) {
> local $/;
> $result = <$source>;
> close $source;
> }
> return $result;
> }
sub getfile {
open my $source, '<', $_[0] or return; # besser: ... die $!;
local $/;
<$source>
}
> - close wird noch nicht auf Erfolg geprüft ...
Um das close haette ich mir jetzt weniger Sorgen gemacht.
Was soll dabei ernsthaft schiefgehen, und es wird sowieso implizit
ausgefuehrt, wenn der Block verlassen wird.
Gruss
Christian
--
Wenn Sie nichts zu tun haben, bitte tun sie es nicht hier.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Christian Lackas wrote:
> sub getfile {
> open my $source, '<', $_[0] or return; # besser: ... die $!;
> local $/;
> <$source>
> }
...
sub getfile { `cat $_[0]` }
...
...
print getfile 'test.dat';
scnr,
Viele Grüße
M.
* Mirco Wahab [2007-02-08]:
Hallo Mirco,
> Christian Lackas wrote:
> > sub getfile {
> > open my $source, '<', $_[0] or return; # besser: ... die $!;
> > local $/;
> > <$source>
> > }
> sub getfile { `cat $_[0]` }
> print getfile 'test.dat';
Can't exec "cat": No such file or directory
Gruß
Christian
--
Assembler ist eine Methode, Programme, die zu langsam laufen,
so umzuschreiben, daß sie überhaupt nicht mehr laufen.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Christian Lackas wrote:
> * Mirco Wahab [2007-02-08]:
>> sub getfile { `cat $_[0]` }
>> print getfile 'test.dat';
>
> Can't exec "cat": No such file or directory
C:\WINDOWS>cat --version
cat (textutils) 2.1
Written by Torbjorn Granlund and Richard M. Stallman.
[...]
C:\WINDOWS>
z.B. von hier:
==> http://www.weihenstephan.de/~syring/win32/UnxUpdates.zip
Viele Grüße
M.
* Mirco Wahab [2007-02-09]:
Hallo Mirco,
> > Can't exec "cat": No such file or directory
> C:\WINDOWS>cat --version
$ which cat
/bin/cat
und trotzdem nicht portabel. Oder performat, oder sicher, oder
zuverlässig.
Gruß
Christian
--
Murphys Law 25:
Hast Du Zweifel an dem was Du sagst, nuschle!
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker