2011-11-10 62 views
0

我有問題獲取用戶名窗體系統。我嘗試在perl中使用getlogin函數,並打印它打印我的用戶名,但我的問題是如何在模板工具包中訪問此用戶名。我想這樣的如何獲取用戶名使用perl模板工具包

#!/usr/bin/perl 
use warnings; 
use strict; 
use Data::Dumper; 
    use XML::Simple; 
use Template; 
    my $username = getlogin || getpwuid($<) || "veeru"; 

    my $xml = new XML::Simple; 
my $data = $xml->XMLin("data.xml", ForceArray=>['dat','employee','experience']); 
    print $username; 

my $template = Template->new(); 
my $filename = 'output1.tex'; 
    $template->process(\*DATA, $data, $filename) 
|| die "Template process failed: ", $template->error(), "\n"; 

system("pdflatex $filename"); 
    __DATA__ 
\documentclass[a4paper,leqno,twoside]{article} 
\usepackage[latin1]{inputenc} 
\usepackage[english]{babel} 
\begin{document} 

Issued by {Name} 
\issuedby{ [% username %] } 

% Document title. Use \doctitleShort{} to insert a shorter title in the header. 
\doctitle{employee information of thie"scr"company} 
\doctitleShort{\@doctitle} 

[% FOREACH comp IN company %] 
[% comp.name %] 
[% comp.location%] 
employeedata: 
[% FOREACH employee IN comp.domain.java.employee %] 

[% employee.name %][% employee.number %] 

[% FOREACH obj IN data%] 

[% FOREACH beha IN obj.employee %] 

[% IF beha.number == employee.number && beha.name == employee.name %] 

[% beha.address %], 

    [% LAST %] 
[% END %] 
    [% END %] 
[% END %] 
[% END %] 
[% END %] 
    [% END %] 
\end{document} 

但其在PDF不打印的用戶名,將它打印在控制檯上的用戶名,所以我在模板進程訪問的用戶名變量沒有錯誤。請告訴我如何在模板中使用該用戶名變量,如何以pdf格式打印。

我的第二個問題是

\doctitle{employee information of thie"scr"company} 
在上面一行文檔標題

寫在模板過程中,我需要從Perl代碼獲得冠軍怎麼辦this.can任何一個可以幫助我,因爲這是我第一次使用模板過程。

回答

0

使用傳遞給模板的hashref(即$data),您需要包含您在模板中使用的任何變量。模板中的變量必須在hashref中包含您想要使用的值的相應鍵。

所以對於username

$data->{username} = $username; 
$template->process(\*DATA, $data, $filename); 

同樣,對於doctitle,你可以將它設置在你的Perl代碼(從而能夠訪問它):

$data->{doctitle} = 'employee information of thie"scr"company'; 

...和在您的模板中使用它:

\doctitle{[% doctitle %]} 
+0

非常感謝您的回覆,這是完美的工作。 – biji

0

查看過程子例程的API文檔here。正如你所看到的第二個參數是一個哈希引用。您所要做的就是將用戶名,文檔標題和data.xml添加到該散列。

+0

,謝謝你的回覆。 – biji

相關問題