On 2019-10-29 7:48 p.m., 刘东 wrote:
Dear every one:
Hello.
I try to write a perl script to delet the content of file carp01_1_both.txt as
same as from another file carp-carp01_TKD181002053-1_1_sg.txt, so to get a new
file from file carp-carp01_TKD181002053-1_1_sg.txt but excluding file
carp01_1_both.txt. However, when I run this scrip, it does not work, and
display the information as follows:
...
Semicolon seems to be missing at carp01_1_both.txt line 44993.
syntax error at carp01_1_both.txt line 1, near "979:"
These messages say that perl is trying to interpret your data file as if
it were a Perl program.
perl script:
#!/usr/bin/perl -w
open(NAME,"<$ARGV[0]")|| die;
open(SECON,"<$ARGV[1]")|| die;
open(SELEC,">$ARGV[2]")|| die;
$name = "";
%pair = ();
while(<NAME>){
chomp;
my @line = split("\t",$_);
$name = $line[0];
$pair{$name} = 1;
}
while(my $li = <SECON>){
chomp($li);
my @line = split("\t",$li);
$name = $line[0];
my $cont = $li;
if (exists $hash{$name}) { # if current read appeared before
next;
} else { # if it haven't been read before
print SELEC "$cont\n";
}
}
close NAME;
close SECON;
close SELEC;
#!/usr/bin/perl
use warnings;
use strict;
open my $NAME, '<', $ARGV[ 0 ] or die "Cannot open '$ARGV[0]' because: $!";
open my $SECON, '<', $ARGV[ 1 ] or die "Cannot open '$ARGV[1]' because: $!";
open my $SELEC, '>', $ARGV[ 2 ] or die "Cannot open '$ARGV[2]' because: $!";
my %pair;
while ( <$NAME> ) {
my ( $name ) = split /\t/;
$pair{ $name }++;
}
while ( <$SECON> ) {
my ( $name ) = split /\t/;
print { $SELEC } $_ unless exists $pair{ $name };
}
close $NAME;
close $SECON;
close $SELEC;
__END__
John
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/