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

FileHandle testen?: if(FH)

Tags: Similar Threads

Readers: 3


<< |< 1 2 >| >> 12 entries, 2 pages
BratHering
 2005-06-09 00:44
#55427 #55427
User since
2005-04-28
155 articles
BenutzerIn
[default_avatar]
hi,

ich hätte da eine frage zum FileHandle testen.
ist es irgendwie möglich so etwas zu machen?
ich würde nämlich gerne in so einer if abfrage überprüfen ob das öffnen geklapt hat.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
open FH, '<', $file;

if(FH)
{
...
}
else
{
print $!;
}

...auf diese weise klapt es schon mal nicht.
weiss jemand rat wie das gehen könnte?

mfg
BratHering
sri
 2005-06-09 00:53
#55428 #55428
User since
2004-01-29
828 articles
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
open or die $!;
\n\n

<!--EDIT|sri|1118264017-->
BratHering
 2005-06-09 01:03
#55429 #55429
User since
2005-04-28
155 articles
BenutzerIn
[default_avatar]
achso sorry,
ich habe vergessen zu sagen, dass ich nicht sterben will :-)
das script soll weiter laufen wei ich selber das ereigniss handlen will wenn das öffnen fehlgeschlagen ist.

das mit dem die habe ich bisher gemacht nur ist es unschön wenn das script abbricht... :-)
pKai
 2005-06-09 01:12
#55430 #55430
User since
2005-02-18
357 articles
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
if (open(FH, $file)) {
# hat geklappt
# mach was mit FH
} else {
# open fehlgeschlagen
# Fehlerbehandlung
}
I sense a soul in search of answers.
BratHering
 2005-06-09 01:14
#55431 #55431
User since
2005-04-28
155 articles
BenutzerIn
[default_avatar]
also ich weiss inzwischen, dass man das öffnen so überprüfen kann:
Code: (dl )
1
2
3
4
5
6
7
8
if(open FH, '<', $file)
{
...
}
else
{
print $!;
}


...aber ich weiss immer noch nicht wie ich ein FileHandle mitten im programm einfach mal so auf gültigkeit testen kann? :-(


mfg
BratHering
BratHering
 2005-06-09 01:19
#55432 #55432
User since
2005-04-28
155 articles
BenutzerIn
[default_avatar]
thx @ pKai ;-)
sri
 2005-06-09 01:44
#55433 #55433
User since
2004-01-29
828 articles
BenutzerIn
[Homepage] [default_avatar]
Sei etwas kreativ...
Code: (dl )
warn "Jo is noch offen" if fileno *HANDLE;
betterworld
 2005-06-09 10:37
#55434 #55434
User since
2003-08-21
2613 articles
ModeratorIn

user image
[quote=sri,08.06.2005, 23:44]Sei etwas kreativ...
Code: (dl )
warn "Jo is noch offen" if fileno *HANDLE;
[/quote]
Es gibt auch ein Filehandle, welches 0 als fileno hat. (Das ist stdin.) Bei Deiner Abfrage wuerde das als geschlossen zählen.
BratHering
 2005-06-09 12:25
#55435 #55435
User since
2005-04-28
155 articles
BenutzerIn
[default_avatar]
[quote=betterworld,09.06.2005, 09:37][quote=sri,08.06.2005, 23:44]Sei etwas kreativ...
Code: (dl )
warn "Jo is noch offen" if fileno *HANDLE;
[/quote]
Es gibt auch ein Filehandle, welches 0 als fileno hat. (Das ist stdin.) Bei Deiner Abfrage wuerde das als geschlossen zählen.[/quote]
stimmt, daran habe ich nicht gedacht. :(
bleibt meine frage also immer noch offen.

in der ActivePerl bibliothek gibt es ein modul namens FileHandle und das hat eine OOP schnittstelle und kann sowas:

Quote
use FileHandle;

$fh = new FileHandle;
if ($fh->open("< file")) {
print <$fh>;
$fh->close;
}

$fh = new FileHandle "> FOO";
if (defined $fh) {
print $fh "bar\n";
$fh->close;
}

$fh = new FileHandle "file", "r";
if (defined $fh) {
print <$fh>;
undef $fh; # automatically closes the file
}

$fh = new FileHandle "file", O_WRONLY|O_APPEND;
if (defined $fh) {
print $fh "corge\n";
undef $fh; # automatically closes the file
}

$pos = $fh->getpos;
$fh->setpos($pos);

$fh->setvbuf($buffer_var, _IOLBF, 1024);

($readfh, $writefh) = FileHandle::pipe;

autoflush STDOUT 1;


...aber ohne OOP müsste man doch bestimmt auch prüfen können nach gültigkeit des FH ?\n\n

<!--EDIT|BratHering|1118305585-->
renee
 2005-06-09 13:08
#55436 #55436
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
[quote=BratHering,09.06.2005, 10:25][quote=betterworld,09.06.2005, 09:37][quote=sri,08.06.2005, 23:44]Sei etwas kreativ...
Code: (dl )
warn "Jo is noch offen" if fileno *HANDLE;
[/quote]
Es gibt auch ein Filehandle, welches 0 als fileno hat. (Das ist stdin.) Bei Deiner Abfrage wuerde das als geschlossen zählen.[/quote]
stimmt, daran habe ich nicht gedacht. :(
bleibt meine frage also immer noch offen.[/quote]
Code: (dl )
warn "Jo is noch offen" if defined fileno *HANDLE;
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/
<< |< 1 2 >| >> 12 entries, 2 pages



View all threads created 2005-06-09 00:44.