您能帮我将这两个程序结合起来,以两行显示输出吗?第一列是$1
,第二列是$2
。
请帮助我解决此问题。谢谢:)
这是我的代码1。
#!/usr/local/bin/perl
#!/usr/bin/perl
use strict ;
use warnings ;
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
my $input = "par_disp_fabric.all_max_lowvcc_qor.rpt.gz";
my $output = "par_disp_fabric.all_max_lowvcc_qor.txt";
gunzip $input => $output
or die "gunzip failed: $GunzipError\n";
open (FILE, '<',"$output") or die "Cannot open $output\n";
while (<FILE>) {
my $line = $_;
chomp ($line);
if ($line=~ m/^\s+Timing Path Group \'(\S+)\'/) {
$line = $1;
print ("$1\n");
}
}
close (FILE);
这是我的代码2。
my $input = "par_disp_fabric.all_max_lowvcc_qor.rpt.gz";
my $output = "par_disp_fabric.all_max_lowvcc_qor.txt";
gunzip $input => $output
or die "gunzip failed: $GunzipError\n";
open (FILE, '<',"$output") or die "Cannot open $output\n";
while (<FILE>) {
my $line = $_;
chomp ($line);
if ($line=~ m/^\s+Levels of Logic:\s+(\S+)/) {
$line = $1;
print ("$1\n");
}
}
close (FILE);
这是代码1的输出,其中包含26行数据:
**async_default**
**clock_gating_default**
Ddia_link_clk
Ddib_link_clk
Ddic_link_clk
Ddid_link_clk
FEEDTHROUGH
INPUTS
Lclk
OUTPUTS
VISA_HIP_visa_tcss_2000
ckpll_npk_npkclk
clstr_fscan_scanclk_pulsegen
clstr_fscan_scanclk_pulsegen_notdiv
clstr_fscan_scanclk_wavegen
idvfreqA
idvfreqB
psf5_primclk
sb_nondet4tclk
sb_nondetl2tclk
sb_nondett2lclk
sbclk_nondet
sbclk_sa_det
stfclk_scan
tap4tclk
tapclk
输出代码1也具有相同的行数。
答案 0 :(得分:1)
paste <(perl script1.pl) <(perl script2.pl)
对此很有用:假设您的shell是bash,然后使用process substitutions
column
发出由制表符分隔的列。对于更漂亮的输出,您可以将粘贴的输出通过管道传递到paste <(perl script1.pl) <(perl script2.pl) | column -t -s $'\t'
select a.unique_id as franchise_id, b.unique_id, b.name
from test as a
left join test as b
on b.franchise_id = a.id
where b.unique_id = 'CL1005'
因此,您无需尝试“合并”您的perl程序。
答案 1 :(得分:1)
要组合这两个脚本并在同一行上输出两个数据项,您需要按住直到文件末尾(或直到您拥有两个数据项),然后立即输出它们。因此,您需要将两个循环合并为一个:
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderHead" runat="Server">
<script src="../scripts/jquery-1.9.1.min.js"></script>
<script>
function onDDLChange() {
var selectedVal = document.getElementById('<%=ddl1.ClientID%>').value;
var selectedTxt = document.getElementById('<%=ddl1.ClientID%>').options[selectedVal].text;
console.log(selectedTxt);
document.getElementById('<%=tb1.ClientID%>').value = selectedTxt;
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderBody" runat="Server">
<asp:DropDownList runat="server" ID="ddl1" onchange="onDDLChange();">
<asp:ListItem Text="" Value=""></asp:ListItem>
<asp:ListItem Text="one" Value="1"></asp:ListItem>
<asp:ListItem Text="two" Value="2"></asp:ListItem>
</asp:DropDownList>
<asp:TextBox runat="server" ID="tb1"></asp:TextBox>
</asp:Content>
答案 2 :(得分:1)
您仍然没有给我们提供至关重要的信息-输入数据是什么样的。最重要的是,您要寻找的两条信息是否在同一行?
[更新::仔细查看您的正则表达式,我发现两条信息可能在同一行上-因为它们都应该是该行的第一项。如果您对问题的理解较为清楚,这将很有帮助。]
我认为,无论您的问题的答案是什么,这都将做对事情。我还添加了我对your previous question的回答中建议的改进:
#!/usr/bin/perl
use strict ;
use warnings ;
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
my $zipped = "par_disp_fabric.all_max_lowvcc_qor.rpt.gz";
my $unzipped = "par_disp_fabric.all_max_lowvcc_qor.txt";
gunzip $zipped => $unzipped
or die "gunzip failed: $GunzipError\n";
open (my $fh, '<', $unzipped) or die "Cannot open '$unzipped': $!\n";
my ($levels, $timing);
while (<$fh>) {
chomp;
if (m/^\s+Levels of Logic:\s+(\S+)/) {
$levels = $1;
}
if (m/^\s+Timing Path Group \'(\S+)\'/) {
$timing = $1;
}
# If we have both values, then print them out and
# set the variables to 'undef' for the next iteration
if ($levels and $timing) {
print "$levels, $timing\n";
undef $levels;
undef $timing;
}
}
close ($fh);