Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中打印循环外部的散列_Perl - Fatal编程技术网

在perl中打印循环外部的散列

在perl中打印循环外部的散列,perl,Perl,我试图读取一个文件,然后想在while循环外打印输出。你有办法做到这一点吗 这就是我正在做的: my $booklistFile= file.txt; my $perlbook; my $javabook; my $cbook; my $data; open my $booklist, "<", $booklistFile or die "can not open the file"; my %bookHash = (); while(&

我试图读取一个文件,然后想在
while
循环外打印输出。你有办法做到这一点吗

这就是我正在做的:

   my $booklistFile= file.txt;
   my $perlbook;
   my $javabook;
   my $cbook;
   my $data;

   open my $booklist, "<", $booklistFile or die "can not open the file";
   my %bookHash = ();

   while(<$booklist>)
   {
     ($perlbook, $javabook, $cbook) = split (',');
     $bookHash{$cbook} = $cbook;
     $data = $bookHash{$cbook} ;

     print $data;
   }
my$booklistFile=file.txt;
我的$perlbook;
我的$javabook;
我的$cbook;
我的$数据;

打开我的$booklist,“将输出累积到变量中,并在循环结束后打印

my $data;
while(<$booklist>){
    ($perlbook, $javabook, $cbook) = split (',');
    $bookHash{$cbook} = $cbook;
    $data = $bookHash{$cbook} ;
    $output .= $data;
}
print $output;
my$data;
while(){
($perlbook,$javabook,$cbook)=拆分(',');
$bookshash{$cbook}=$cbook;
$data=$bookshash{$cbook};
$output.=$data;
}
打印$输出;

我只是在猜测你想在这里做什么。如果我看一下你的代码, 您可能有一个包含逗号分隔记录的文件,其中包含 书名

如果是这样的话,下面的代码片段将打印所有C语言书籍,这应该是 在输入行的第三个字段上,根据
($perlbook,$javabook,$cbook)=拆分(',);

问候,

rbo

...
my $booklistFile= 'file.txt';
open my $bookhandle, '<', $booklistFile or die "can not open $!";
my %bookHash = ();

while(my $line = <$bookhandle>) {
   chomp $line;
   my @record = split /\s*,\s*/, $line;
   push @{ $bookHash{PERL} }, $record[0];
   push @{ $bookHash{JAVA} }, $record[1];
   push @{ $bookHash{C}    }, $record[2];
}

# print all c books alphabetically sorted
print join "\n", sort @{ $bookHash{C} };
...
   ...
   ...
   my @record = split /\s*,\s*/, $line;
   for my $category ( @bookHash{'PERL', 'JAVA', 'C'} ) {
      push @$category, shift @record
   }
   ...
   ...