open(IN_FILE, $id_file) or die "Cant open $id_file file";
while (my $id_list= <IN_FILE>) {
chomp $id_list;
if ($id_list =~ m/^#|^$/g) {
next;
}
# This Works WELL
# if the file comes in QIIME format
elsif($otus_tag){
if ($id_list =~ m/^$otus_tag\t/g) {
@list_id = split /\t/, $id_list;
}
}
# This is the section that I want to FIX !!!!
# if the format are in space, tab, semicolon, comma or in new line.
elsif(!$otus_tag){
if ($id_list =~ m/\s|\t|\,|\;/g) {
@list_id = split /\s|\t|\,|\;/, $id_list;
}
}
}
我有一个 perl 脚本的一部分,用于从 6 种不同格式的文件中提取 id 列表:
Tab_delimited file:
Y4.SW08.DCM.X4a_1386 Y4.SW08.DCM.X4a_1457 Y4.SW08.DCM.X4a_1590
Tab_delimited_QIIME file:
A100B1 Y4.SW08.DCM.X4a_1386 Y4.SW08.DCM.X4a_1457 Y4.SW08.DCM.X4a_1590
Space_delimited file:
Y4.SW08.DCM.X4a_1386 Y4.SW08.DCM.X4a_1457 Y4.SW08.DCM.X4a_1590
Comma_delimited file:
Y4.SW08.DCM.X4a_1386,Y4.SW08.DCM.X4a_1457,Y4.SW08.DCM.X4a_1590
Semicolon_delimited file:
Y4.SW08.DCM.X4a_1386;Y4.SW08.DCM.X4a_1457;Y4.SW08.DCM.X4a_1590
List_delimited file:
Y4.SW08.DCM.X4a_1386
Y4.SW08.DCM.X4a_1457
Y4.SW08.DCM.X4a_1590
该代码目前可以很好地将 id 添加到数组中,除了最后一种格式,列表分隔文件,我试图在接下来的 2 行中添加一个 \n:
if ($id_list =~ m/\s|\t|\,|\;|\n/g)
@list_id = split /\s|\t|\,|\;|\n/, $id_list;
但是当文件格式为列表时,它不会将 ids 添加到数组中!!!...... 任何想法 ???
非常感谢