Come funziona opendir lavoro in Perl 6?
Domanda
Qualcuno può dirmi, perché il "opendir" non funziona?
#!/usr/bin/env perl6
use v6;
my $file = 'Dokumente/test_file';
if ( my $fh = open $file, :r ) {
for $fh.lines -> $line {
say $line;
}
} else {
say "Could not open '$file'";
}
my $dir = 'Dokumente';
my $dh = opendir $dir err die "Could not open $dir: $!";
Output:
Ciao, mondo!
Linea 2.
Ultima linea.Impossibile trovare sub inesistente & opendir
Strumenti corrente .: '_block14' pc 29 (EVAL_1: 0)
chiamato da sub PC 1163 (src / colla / run.pir: 20) 'UNIT_START!'
chiamato da Sub 'perl6; PCT; HLLCompiler; eval' pc -1 ((file sconosciuto): - 1)
chiamato da Sub 'perl6; PCT; HLLCompiler; evalfiles' pc 1303 (compilatori / PCT / src / PCT / HLLCompiler.pir: 707)
chiamato da Sub 'perl6; PCT; HLLCompiler; command_line' pc 1489 (compilatori / PCT / src / PCT / HLLCompiler.pir: 794)
chiamato da 'perl6; Perl6; compilatore; main' Sub pc -1 ((file sconosciuto): - 1)
Soluzione
opendir è semplicemente non ancora implementata. Si prega di inviare una segnalazione di bug inviando una mail a rakudobug@perl.org.
Altri suggerimenti
Perl6 è pronto ora. Così possiamo dare una risposta corretta a questa domanda molto vecchio.
Non c'è più opendir in Perl6. Ma grazie a molte persone che lavorano su Perl 6, aprire un dir ora è molto semplice.
perl - doc dir dice:
Apertura di una directory richiede solo per tipo:
for dir() -> $file {
say $file;
}
E con un filtro:
for dir('/path/to/dir', test => /\.jpg$/ ) -> $file {
say $file;
}
Così si può dimenticare opendir, readdir, grep e altri.
Non ho Perl 6, ma sembra che si sta chiamando opendir in modo non corretto. Questo frammento di codice perl funziona per me:
my $dh;
opendir $dh, '/home/ar' or die 'Could not open directory';