求助下面的数据列表中的数据提取问题

求助下面的数据列表中的数据提取问题

cdentA  troteA    cdentB    troteB   Type     PubM
02995   4089      04484     4093     YH       16189514,15231748
01898   7429      00017     71       IV       3510866,6893424
02153   7114      00017     71       iV       15163409,10848969
03014   1173      03690     1856     yH       16189514
02319   10134     00017     71       iV       10958671
02458   9087      00017     71       iv       8416954
02549   4130      00017     71       iv       7820861
03014   1173      04318     10320    yh       16189514
02991   4306      00017     71       iv       8612804
.
.
.
.
.
.
请教一下cdentA和cdentB下的号码怎么样提取出来,可不可以不用模式匹配了,有不有直接读取像这种数据列表格式文件的模块,能把相关头标注下的内容提取出来,
先谢谢一个!
use strict;
use warnings;

for (<DATA>) {
    my @fields = (split /\s+/)[0, 2];
    print "@fields\n";
}


__DATA__
cdentA  troteA    cdentB    troteB   Type     PubM
02995   4089      04484     4093     YH       16189514,15231748
01898   7429      00017     71       IV       3510866,6893424
02153   7114      00017     71       iV       15163409,10848969
谢谢Lonki兄弟!!
如何从别外一个文件中读入呢。
#cat data.txt
cdentA  troteA    cdentB    troteB   Type     PubM
02995   4089      04484     4093     YH       16189514,15231748
01898   7429      00017     71       IV       3510866,6893424
02153   7114      00017     71       iV       15163409,10848969
要读入data.txt文件中的数据应该怎么写呢?
还有个问题上文的
__DATA__
这个__代表什么。
新手请多指教!
open(FH, '<', 'data.txt') or die "Cannot open data.txt: $!\n";
while (<FH>) { ... }


__DATA__表示其后的数据作为DATA的内容, 可以用<DATA>来读取
Perl有两个记号__DATA__和__END__,作为在代码中存储数据的。当用这两个记号时,perl不会认为记号之后的内容是代码。读取这些内容的时候,只要从DATA句柄读就可以读取__DATA__或
__END__之后的内容了。
多谢二位,学习了。
再问一下,还有一点不明白。
cat data.txt
cdentA  troteA    cdentB    troteB   Type     PubM
02995   4089      04484     4093     YH       16189514,15231748
01898   7429      00017     71       IV       3510866,6893424
02153   7114      00017     71       iV       15163409,10848969
03014   1173      03690     1856     yH       16189514
02319   10134     00017     71       iV       10958671
02458   9087      00017     71       iv       8416954
02549   4130      00017     71       iv       7820861
03014   1173      04318     10320    yh       16189514
02991   4306      00017     71       iv       8612804

cat test1
#!/usr/bin/perl
open(FH, '<', 'data.txt') or die "Cannot open data.txt: $!\n";
for (<FH>) {
   my @fields = (split /\s+/)[0, 2];
    print "@fields\n";
};

cat test2
#!/usr/bin/perl
open(FH, '<', 'data.txt') or die "Cannot open data.txt: $!\n";
while (<FH>) {
   my @fields = (split /\s+/)[0, 2];
    print "@fields\n";
}
这里for 和while 好像没什么区别,得出结果都有一样,应该怎么理解?
还有为什么有些行尾加不加 ; 号都可以呢?