2015-10-13 63 views
1

我读Perl中的文件和拆分功能我想拆基于两个分隔符的值。Perl中使用两个分隔符

col1  col2 
uc011nbb.2 NM_001039567 
uc004fuo.4 NM_001006120 
uc011nbc.2 NM_001006121 
uc010nwz.3 NM_001006121 

第1栏和COL2由制表符分隔,所以我通常使用这样的:

my @cols = split(/\t/); 

不过,我想拆COL1也 ''。我如何修改我的分割功能?

+3

'我@cols =分裂(/ [\吨] /); ' –

+3

假设你的“COL2”不是以往任何时候都含有'当然是.'! – Sobrique

回答

6

可以使用character class编码两种可能性:

split /[.\t]/; 

正如上面@Sobrique指出,应确保.永远不会在任何列名的使用它作为分隔符之前。

实施例:

say foreach split /[.\t]/, "this is some.text that has\ttwo delimiters"; 
this is some 
text that has 
two delimiters 
+4

如果第二列中可能包含的点,用'分裂/[\t.]/,$ _,3'永不分开超过3倍的值。 – choroba