이것은 내 상황이 어떻게 생겼는지입니다. 나는 두 개의 테이블을 가지고있다 :중복 값 병합 및 테이블 간의 복사
Table 1
C0 C1 C2 C3 ... C8
1 10
2 50
3 70
3 20
Table 2
C0 C1 C2 C3 ... C7
1
2
3
Table 2 should become like this
C0 C1 C2 C3 ... C7
1 x = 10
2 x = 50
3 x = 70,20
기본적으로 두 테이블의 C1 값을 비교한다. 값이 같으면 C8 (표 1)의 값을 C7 (표 2)에 복사하고 "x ="를 추가해야합니다. 그러나 C1 (table1)에 중복 값이있는 경우 여기 3과 같이 표 2에서이 값을 ','(x = 70,20와 같이)로 구분하여 넣어야합니다.
이 내가이 모두 정확하면 지금까지
my $table1 = $ARGV[0];
my $table2 = $ARGV[1];
# Open my file (I use exactly the same code for opening table 2)
unless ($table1) {
print "Enter filename of file:\n";
$table1 = <STDIN>;
chomp $table1;
}
open(DATA1,'<',$table1) or die "Could not open file $filename $!";
# Here I push the values of C8 in table 1 to the same row
my %info =()
while (<DATA1>) {
my @columns = split;
if(exists $info{ $columns[1] }) {
push @{ $info{ $columns[1] }->{var} }, $columns[8];
}
else {
$info{ $columns[1] } = { var =>[ $columns[8] ] }
}
}
, 지금해야 할 유일한 것은 C7 (표 2)에 값을 복사하여이 "X ="
시작하도록하는 것입니다 무슨이다누군가 나를 도와 줄 수 있습니까?
를 작동하는 방법에 대한 자세한 내용은
perldoc perldsc
및perldoc perllol
를 참조하십시오? –Sugeestions :'use strict;를 사용하십시오. 지원을 사용; 또한 bareword 파일 핸들 (DATA1)을 피하십시오. 스칼라 변수를 파일 핸들로 사용하십시오. –
'$ info'의 구조를 설명 할 수 있습니까? –