1 2 3 4 5 6 7 8 9 10 11 12
if (exists $lkzs{CountryCode}){ $out = $lkzs{CountryCode}; print $out $satz; } else { $land = CountryCode; $datei = $verzeichnis.$land.".txt"; $out = CountryCode; open (our $out,">:raw:utf8",$datei); $lkzs{CountryCode} = $out; print $out $header; print $out $satz; }
Guest daveah, sorry, das ist missverständlich. Es handelt sich um eine Perl-Anwendung aus einer anderen software, da kann man variablen von außen mitgeben. In dem Fall CountryCode, denk Dir einfach ein $ davor.
Quotewie mache ich den open anders?
1 2 3 4 5 6 7 8 9
use strict; use warnings; use IO::File; my $fh = IO::File->new; $fh->open($file, O_RDWR) or die $!; $fh->print... $fh->seek... $fh->truncate... $fh->close;
1 2 3 4 5 6 7 8 9 10 11 12
if (exists $lkzs{CountryCode}){ $out = $lkzs{CountryCode}; print $out $satz; } else { $land = CountryCode; $datei = $verzeichnis.$land.".txt"; $out = CountryCode; open (my $fh,">:raw:utf8",$datei); $lkzs{CountryCode} = $fh; print $fh $header; print $fh $satz; }
Guest daveDer open und das Schreiben des aktuellen Satzes funktioniert auch, aber die Variable $out ist nach dem Öffnen nicht mehr das Känderkennzeichen sondern "GLOB(0x592ce6c)"
Code (perl): (dl )1 2 3 4 5 6 7 8 9 10 11 12if (exists $lkzs{CountryCode}){ $out = $lkzs{CountryCode}; print $out $satz; } else { $land = CountryCode; $datei = $verzeichnis.$land.".txt"; $out = CountryCode; open (our $out,">:raw:utf8",$datei); $lkzs{CountryCode} = $out; print $out $header; print $out $satz; }
Guest daveUnd genau das macht dein Kode. Funktioniert etwas bei dir nicht? Bei mir ist alles ok.da ich ja fuer jedes Land eine Datei öffne (gleichzeitig), muss ich mir irgendwie merken, wohin ich den print mache, das wollte ich eigentlich mit dem hash.
$lkzs{$CountryCode} = 1;
if (exists $lkzs{$CountryCode}){
if (fileno $CountryCode){
1 2 3 4 5 6 7 8 9
if (fileno $CountryCode){ print $CountryCode $satz; } else { $land = $CountryCode; $datei = "$verzeichnis.$land.txt"; open ($CountryCode,">:raw:utf8",$datei); print $CountryCode $header; print $CountryCode $satz; }
print $CountryCode $satz;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use IO::File; my %Registration_Number_Files; my $Registration_Number_Path = '/path/to/registration_numbers'; # ... sub write_record { my ($country_code, $header, $record) = @_ my $file_handle = $Registration_Number_Files{$country_code}; unless($file_handle) { my $file_name = "$Registration_Number_Path/$country_code.txt"; $file_handle = IO::File->new(">:raw:utf8", $file_name) or die "Failed to create '$file_name'"; print $file_handle $header; $Registration_Number_Files{$country_code} = $file_handle; } print $file_handle $record; }