Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8670[/thread]

Code / Style Frage

Leser: 1


<< >> 4 Einträge, 1 Seite
Linuxer
 2007-01-22 17:37
#73495 #73495
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hallo *,

ein Code-Beispiel von renee brachte in mir das Thema auf:

Renees Beispielcode:
Code: (dl )
1
2
3
4
5
6
7
8
9
...
my $content;
{
local $/;
open my $fh,'<',$file or die $!;
$content = <$fh>;
close $fh;
}
...


Mein Beispiel wäre eher gewesen:
Code: (dl )
1
2
3
4
5
6
7
8
9
...
my $content;
open my $fh,'<',$file or die $!;
{
local $/;
$content = <$fh>;
}
close $fh;
...


Mein persönlicher Favorit für eigene Skripte wäre dann noch:
Code: (dl )
1
2
3
4
5
...
open my $fh,'<',$file or die $!;
my $content = do { local $/; <$fh>; };
close $fh;
...



Welchen Code würdet Ihr einsetzen?
Gibt es (perlige) Gründe (also z.B. Performanz, o.ä.), einen bestimmten davon zu präferieren?

renees Variante hat den Vorteil, dass der Filehandle nur für den Block gilt... Gibt's noch andere Vorteile?

[edit]1. Link eingebaut
2. Rechtschreibung korrigiert[/edit]\n\n

<!--EDIT|Linuxer|1169482164-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
renee
 2007-01-22 17:44
#73496 #73496
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Man kann es übrigens auch noch so machen:
Code: (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl

use strict;
use warnings;

my $file = '/path/file.txt';
my $content = do{local (@ARGV,$/) = $file; <>};
print $content;


TIMTOWTDI
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/
pq
 2007-01-22 17:49
#73497 #73497
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wenn man den filehandle in dem do-block öffnet, hat man noch den vorteil, dass man
ihn nicht zu schliessen braucht; das macht ja perl automagisch. deshalb ist das
close() in renees erstem beispiel überflüssig.
auch schön:
Code: (dl )
my $content = do { open my $fh, '<', $file or die $!; local $/; <$fh> };
\n\n

<!--EDIT|pq|1169481087-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2007-01-22 22:07
#73498 #73498
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Übrigens ist mir letztens eine alternative Methode für ein File-Slurp eingefallen:
Code: (dl )
use LWP::Simple; my $content = get("file://$file");
Insbesondere für Einzeiler in der Kommandozeile interessant...
<< >> 4 Einträge, 1 Seite



View all threads created 2007-01-22 17:37.