Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

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 (Chancellor) 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 the grasshoppers chirp...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2017-04-24 00:02 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (433 votes). Check out past polls.