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

  • Автор темы etsilop
  • Дата начала
E

etsilop

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

#!/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.
>
 
A

Axe79

Гость
#2
Код:
#!/usr/bin/perl
@layers = qw(AAS3 BBS2 DDS1);
for (@layers){
print $_;
open($_, ">/home/axe/Desktop/$_") ||die "$!";
print $_ "test string";
close ($_);
}
набрал роботает
посмотри 'qw'
 
A

ad280379

Гость
#3
доброго дня,
если файлы передаются из командной строки то получиться примерно следующее
(ваше условие относительно того что файлы нужно создать не учитывал но легко делается)

рабочий пример
--------------------------
#!/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.
>