我正在尝试读取模板配置文件(template.config),看起来像这样(所需输入选项的数量可以增加):
[module1]
;;path to speedseq package binary directory
$;SPEEDSEQ_BIN_DIR$; = /usr/local/packages/
;;Sequence file 1
$;Seq1File$; =
;;Sequence file 2
$;Seq2File$; =
;;Read Group
$;Read_Group$;='@RG\tID:NA12878\tSM:NA12878\tPL:ILLUMINA\tLB:NA12878\tPU:NA12878'
;;Reference
$;Reference$; =
[module2]
;;Output Chromosome
$;Chromosome$; =
;;use --v for verbose summary
$;OTHER_ARGS$; = --v
其字段将由命令行上的用户输入填充,例如:
perl script.pl template.config USER_INPUT.txt USER_INPT2.txt USER_INPUT_REF.txt USER_INPUT_CHR.txt
它将输出一个新的填充配置文件,如下所示:
[module1]
;;path to speedseq package binary directory
$;SPEEDSEQ_BIN_DIR$; = /usr/local/packages/
;;Sequence file 1
$;Seq1File$; = "USER_INPUT.txt"
;;Sequence file 2
$;Seq2File$; = "USER_INPT2.txt"
;;Read Group
$;Read_Group$;='@RG\tID:NA12878\tSM:NA12878\tPL:ILLUMINA\tLB:NA12878\tPU:NA12878'
;;Reference
$;Reference$; = "USER_INPUT_REF.txt"
[module2]
;;Output Chromosome
$;Chromosome$; = "USER_INPUT_CHR.txt"
;;use --v for verbose summary
$;OTHER_ARGS$; = --v
每个模块中的线应保持相同,但模块的顺序可能不同,例如Module2可以在Module1之前。我怎么能这样做?
当我尝试将哈希键打印到文件时,顺序与输入文件中的顺序不同。我甚至尝试过排序键选项但不起作用。任何人都可以建议吗?我想在哈希
中创建/的哈希[format]
到目前为止我使用的是 - 我写了一个脚本来创建两个哈希但我无法获得所需的顺序,有人可以指出我错过了什么吗?
open($template.config, "<$sConfigFile") or die "Error! Cannot open $sConfigFile for reading: $!";
while (<$template.config>) {
$_ =~ s/\s+$//;
next if ($_ =~ /^#/);
next if ($_ =~ /^$/);
if ($_ =~ m/^\[(\S+)\]$/) {
$sComponent = $1;
next;
}
elsif ($_ =~ m/^;;\s*(.*)/) {
$sDesc .= "$1.";
next;
}
elsif ($_ =~ m/\$;(\S+)\$;\s*=\s*(.*)/) {
$sParam = $1;
$sValue = $2;
}
$sParam = $sValue = $sDesc = "";
next;
}
}
不将[module1] , [mpdule2]
视为小节或标题,并以随机顺序打印出所有已填充的键
答案 0 :(得分:0)
我认为您可以通过按照将哈希键添加到哈希值的顺序存储哈希键列表来获得所需的内容
这是一个例子
runner="jacoco"
但是,我不清楚通过编写基本上是您自己的自定义模板格式会获得什么