ОБСУЖДЕНИЕ

Perl открыть на запись несколько файлов одновременно

2 ответов 5,4 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Есть необходимость создать несколько файлов и писать в них одновременно данные.
подскажите как это правильно сделать - скрипт представленный ниже выдает ошибку.

#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my @layers = ('a', 'b', 'c');
foreach(@layers){
print $_ ."\n";
open($_, ">_out_$_.txt");
print $_ 'test string';
}
__END__

./test_open.pl
a
Can't use string ("a") as a symbol ref while "strict refs" in use at ./test_open.pl line 7.
>
 
Код:
#!/usr/bin/perl
@layers = qw(AAS3 BBS2 DDS1);
for (@layers){
print $_;
open($_, ">/home/axe/Desktop/$_") ||die "$!";
print $_ "test string";
close ($_);
}
набрал роботает
посмотри 'qw'
 
доброго дня,
если файлы передаются из командной строки то получиться примерно следующее
(ваше условие относительно того что файлы нужно создать не учитывал но легко делается)

рабочий пример
--------------------------
#!/usr/bin/perl
#use strict;
$i=0;
@names = @ARGV;

while(<>)
{
if (eof)
{
($a,$;) = split(/\./,$names[$i]);
open($a,">$names[$i]") or die "Can't open $!";
print $a "Test string \n";
$i++;
close($a);
}
}
--------------------------

формат prg_name.pl file1 file2 file3 ... fileN

Есть необходимость создать несколько файлов и писать в них одновременно данные.
подскажите как это правильно сделать - скрипт представленный ниже выдает ошибку.

#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my @layers = ('a', 'b', 'c');
foreach(@layers){
print $_ ."\n";
open($_, ">_out_$_.txt");
print $_ 'test string';
}
__END__

./test_open.pl
a
Can't use string ("a") as a symbol ref while "strict refs" in use at ./test_open.pl line 7.
>