Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 如何用Perl编写一个算法,从两个匹配的文件中读取数据并打印查询_Algorithm_Perl - Fatal编程技术网

Algorithm 如何用Perl编写一个算法,从两个匹配的文件中读取数据并打印查询

Algorithm 如何用Perl编写一个算法,从两个匹配的文件中读取数据并打印查询,algorithm,perl,Algorithm,Perl,我在为一项任务编写算法时遇到了困难。我在这里问的每一个问题都让我学到了新的东西,谢谢你 我必须读取一个文本文件(一个表包含一个ID和一个名称),并且我必须将它们与另一个具有相同ID和名称的文件进行匹配 我想用Perl编写一个程序,打印出第一个表与第二个表匹配的结果,并只打印匹配的ID、名称、子ID和日期(第二个表的最后两个字段) 有人能帮我解决这个问题吗 这是我已经尝试过的 #!/bin/env perl use strict; use warnings; use autodie;

我在为一项任务编写算法时遇到了困难。我在这里问的每一个问题都让我学到了新的东西,谢谢你

我必须读取一个文本文件(一个表包含一个ID和一个名称),并且我必须将它们与另一个具有相同ID和名称的文件进行匹配

我想用Perl编写一个程序,打印出第一个表与第二个表匹配的结果,并只打印匹配的ID、名称、子ID和日期(第二个表的最后两个字段)

有人能帮我解决这个问题吗

这是我已经尝试过的

#!/bin/env perl

use strict;  
use warnings;  
use autodie;  

use Data::Dumper;  

# Create a file handle for the input file 
my $fname = 'secondtable.txt';  
open(my $fh, '<:encoding(UTF-8)', $fname);  

# print header  
my $cname = readline $fh;  
print $cname;  

# # print rows  
while ( my $line = readline $fh ) {
  chomp $line;
  print "$line\n";
}
#/bin/env perl
严格使用;
使用警告;
使用自动模具;
使用数据::转储程序;
#为输入文件创建文件句柄
my$fname='secondtable.txt';
打开(我的$fh,'
---in2---


这是一个不精确的问题描述。如果你更仔细地解释,你更有可能得到有用的答案。示例数据将允许人们为你提供一个有效的解决方案。SO规则要求你解释你尝试过的内容。欢迎使用堆栈溢出。请尽快阅读该页面。从某种程度上说,这听起来很简单您已经解释过了。读取第一个文件并将信息存储在某种哈希表中。读取第二个文件,当标识信息匹配时,打印行。向我们显示您的代码,我们可以提供更多帮助;在此之前,我们无法(或将要)提供更多帮助为您做——我们通常不会从头开始编写代码,但我们肯定会帮助您解决问题。(不要忘记
使用严格;使用警告;
)很抱歉,我写评论时正在研究算法。我就是这样尝试的,我设法阅读了第二个表,但不太确定如何做第二个表:#!/bin/env perl```@marko:请通过编辑您的问题来添加信息。评论中的代码很难阅读谢谢您的帮助。
use warnings;
use strict; 

open my $file1, '<', 'in1.txt' or die $!;
open my $file2, '<', 'in2.txt' or die $!;

my %data1;
while(<$file1>){
    chomp;
    next if /^name/;
    my @split = split(/\t/);
    $data1{$split[0]}{$split[1]}++;
}

my %data2;
while(<$file2>){
    chomp;
    next if /^name/;
    my @split = split(/\t/);
    $data2{$split[0]}{$split[1]}++;
    print "$split[0]\t$split[1]\n" if $data1{$split[0]}{$split[1]};
}
name    id
foo 1
bar 2
baz 3
other   4
name    id
bar 1
baz 2
baz 3
other   4