Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

How to get system user name from windows using perl

by veerubiji (Sexton)
on Nov 10, 2011 at 12:21 UTC ( #937358=perlquestion: print w/replies, xml ) Need Help??
veerubiji has asked for the wisdom of the Perl Monks concerning the following question:

Hi everyone, I am generating pdf file by using perl template-toolkit, I am reading xml file and processing through template toolkit and compiling using pdf latex.I written script like this

<code> #!/usr/bin/perl use warnings; use strict; use Data::Dumper; use XML::Simple; use Template; my $xml = new XML::Simple; my $data = $xml->XMLin("data.xml", ForceArray=>['dat','employee','expe +rience']); #print Dumper($data); 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, acronym, department, phone} \issuedby{veerubiji,vebi,ece,123456} % Document title. Use \doctitleShort{} to insert a shorter title in th +e header. \doctitle{employee information of thie"scr"company} \doctitleShort{\@doctitle} [% FOREACH comp IN company %] [% %] [% comp.location%] employeedata: [% FOREACH employee IN %] [% %][% employee.number %] [% FOREACH obj IN data%] [% FOREACH beha IN obj.employee %] [% IF beha.number == employee.number && == + %] [% beha.address %], [% LAST %] [% END %] [% END %] [% END %] [% END %] [% END %] [% END %] \end{document}

the above script is working good but my problem is in the above script


1)I written manually my name . how can I get that username directly from windows system. If suppose somebody using the same script in other system it has to display his user name. how can I get that user name from windows using perl script or template module.

my second problem is

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

in the above line document title is written in template process, I need to access title from perl code how to do this.can any one help me because this my first time using template process.

Replies are listed 'Best First'.
Re: How to get system user name from windows using perl
by choroba (Bishop) on Nov 10, 2011 at 12:30 UTC

      thanks for your reply and I tried as you said like this,

      my $username = getlogin || getpwuid($<) || "veeru"; print $username;

      it printing my usename its working ok but How can I use this variable in my template process.

        but How can I use this variable in my template process

        You could put it in your $data hash:

        $data->{username} = ...; ... $template->process(\*DATA, $data, $filename) ... \issuedby{[% username %]}
Re: How to get system user name from windows using perl
by Anonymous Monk on Nov 10, 2011 at 12:32 UTC

    my name and acronym and department e.t.c. how can I get that name directly from windows system.

    Never heard of a windows system maintaining such information, but if you can retrieve it from the registry, you could use Win32::TieRegistry

    Also, %ENV contains lots of information, like USERPROFILE...

        Au contraire, Windows absolutely does maintain the current user information.

        Where is the department name? Acronym, e.t.c?

        Reading comprehension is fun :)

      Type SET at the command prompt to get a list of available environment variables on a Windows system.

      $ENV{USERNAME} for example.

        Caveat: %ENV is always byte semantics, if you have an oldish Windows and a username outside of the ANSI locale, you get question marks. One should be using Win32ís LoginName() instead which always returns character-shaped characters.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://937358]
Approved by ww
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2017-11-19 07:47 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (278 votes). Check out past polls.