2011-11-10 29 views
0

ユーザー名フォームのWindowsシステムの取得に問題があります。私は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} 

がテンプレートプロセスで書かれている、私はいずれかが私を助けてthis.canを行う方法をperlのコードから、タイトルにアクセスする必要がある。この私の初めてのでテンプレートプロセスを使用します。

答えて

0

テンプレートに渡すハッシュリファレンス($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。ご覧のとおり、2番目の引数はハッシュリファレンスです。そのハッシュにユーザー名、ドキュメントのタイトル、およびdata.xmlを追加するだけです。

+0

、ご返信ありがとうございます。 – biji

関連する問題