在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
}
...
...