我有一個哈希%m_h,里面有幾種不同的資料型別。我想'q20_bases'從陣列中洗掉該專案,$VAR4但不知道如何。
資料結構(從print Dumper %m_h)
$VAR1 = 'run_m';
$VAR2 = [
'run_id',
'machine',
'raw_clusters',
'passed_filter_reads',
'yield'
];
$VAR3 = 'ln_m';
$VAR4 = [
'run_id',
'lane_number',
'read_number',
'length',
'passed_filter_reads',
'percent_passed_filter_clusters',
'q20_bases',
'q30_bases',
'yield',
'raw_clusters',
'raw_clusters_sd',
'passed_filter_clusters_per_tile',
'passed_filter_clusters_per_tile_sd',
'percent_align',
'percent_align_sd'
];
我試過了,delete $m_h{'q20_bases'};雖然它什么也沒做,我不知道該往哪個方向走。
uj5u.com熱心網友回復:
delete從散列中洗掉鍵和關聯的值,而不是從陣列中洗掉元素。
您可以使用grep來選擇陣列中不同于q20_bases.
$m_h{ln_m} = [grep $_ ne 'q20_bases', @{ $m_h{ln_m} }];
或者
@{ $m_h{ln_m} } = grep $_ ne 'q20_bases', @{ $m_h{ln_m} };
你也可以使用splice從陣列中移除一個元素,但是你需要知道它的索引:
my ($i) = grep $m_h{ln_m}[$_] eq 'q20_bases', 0 .. $#{ $m_h{ln_m} };
splice @{ $m_h{ln_m} }, $i, 1;
您可以看到,您總是需要取消對值的參考@{...}才能從陣列參考中獲取陣列。最近的 Perls 也為它提供了另一種語法:
$m_h{ln_m}->@*
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/409713.html
標籤:
下一篇:Perl腳本不喜歡日期擴展
