0

Windows システムからユーザー名を取得する際に問題があります。perl で getlogin 関数を使用して、自分のユーザー名を印刷して印刷しようとしましたが、テンプレート ツールキットでこのユーザー名にアクセスする方法が問題です。私はこのようにしてみました

 #!/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 で印刷する方法を教えてください。

私の2番目の問題は

\doctitle{employee information of thie"scr"company}

上記の行のドキュメント タイトルはテンプレート プロセスで記述されています。これを行うには perl コードからタイトルにアクセスする必要があります。テンプレート プロセスを使用するのはこれが初めてなので、誰か助けてください。

4

2 に答える 2

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 %]}
于 2011-11-10T13:56:47.300 に答える
0

プロセス サブルーチンの API ドキュメントを参照してください。ご覧のとおり、2 番目の引数はハッシュ参照です。ユーザー名、ドキュメント タイトル、および data.xml をそのハッシュに追加するだけです。

于 2011-11-10T13:58:57.077 に答える