2008/07/04

The Labs.Com Issue_07_Win32
Last update 1999/02/20

TPJ: Issue_07_Win32

This is a collection of programs published by The Perl Journal. You can download all source-code also from TPJ: Programs.
  1. spawn_server
  2. pipe_server
  3. userdb
  4. spawn_client
  5. pipe_client
  6. More Samples on Win32
Issue_07_Win32
1. spawn_server
Download spawn_server

 use Win32::Process; 
 %Data = ( 
          one =>1, 
          two =>2, 
          three =>3 
          ); 
 pipe(READ, WRITE); 
 select(WRITE); 
 $| = 1; 
 select(STDOUT); 
 open(SAVEIN, "< &STDIN")  ||  die "Can not save STDIN\n"; 
 open(STDIN, "< &READ")    ||  die "Can not redirect STDIN\n"; 
 select(STDIN); 
 $| = 1; 
 select(STDOUT); 
 Win32::Process::Create($Proces, 
                      c:\\perl\\bin\\perl.exe", 
         "c:\\perl\\bin\\perl.exe 
                      c:\\perl\\test\\client.pl", 
         1, 
         NORMAL_PRIORITY_CLASS, 
         "c:\\perl\\test"); 
 open(STDIN, "< &SAVEIN"); 
 close(SAVEIN); 
 close(READ); 
 print "$0: Sending variables to child...\n"; 
 foreach $Temp (keys(%Data)){ 
         print "$0:\t$Temp=$Data{$Temp}\n"; 
         print WRITE "\$Data{$Temp}=$Data{$Temp};\n"; 
 } 
 print "$0: Finished sending variables.\n"; 
 close(WRITE); 
 print "$0: About to terminate. Waiting for <RETURN> to be hit...\ 
 \n"; 
 <STDIN>; 
 print "$0: End.\n"; 

Issue_07_Win32
2. pipe_server

Download pipe_server

 use Win32::Pipe; 
 $Pipe = new Win32::Pipe("My_Pipe"); 
 $Pipe->Connect(); 
 $Pipe->Write("Hello client, from $0"); 
 $Pipe->Close(); 

Issue_07_Win32
3. userdb

Download userdb

 # From Dave Roth's Perl for Win32 article in issue #7 of The Perl Jour\ 
 nal. 
 # This is *not* a standalone script!  See the article for how to use t\ 
 hese. 
  
 sub CheckMembership{ 
     my($Domain, $User, $Group) = @_; 
     return (Win32::NetAdmin::GroupIsMember($Domain, $Group, $User) || \ 
 Win32::NetAdmin::LocalGroupIsMember($Domain, $Group, $User)); 
 }         
 open(FILE, "< users.txt") || die "Could not open ($!)"; 
 @Users = <FILE>; 
 close(FILE); 
 foreach $Data (@Users){ 
     chop $Data; 
     ($Domain, $User, $Password, $HomeDir, $Password, $Comment) = split\ 
 ("\t", @Users); 
   Win32::NetAdmin::UserCreate( 
                               $Domain,                 # Domain  
                               $User,                        # Userid  
                               $Password,                 # Password 
                               $PasswordAge,                  # Passwor\ 
 d Age 
                               USER_PRIV_USER,        # Privileges 
                               $HomeDir,                # Home director\ 
 y 
                               $Comment,                 # Comment 
                               UF_NORMAL_ACCOUNT | UF_SCRIPT,        # \ 
 Flags 
                               "c:\\scripts\\$User.bat")         # Logo\ 
 n script 
       || print "$User was not added.\n"; 
 } 

Issue_07_Win32
4. spawn_client

Download spawn_client

 print "$0: Starting.\n"; 
 print "$0: Reading in variables...\n"; 
 while(<STDIN>){ 
     eval($_); 
     print "$0: \t$_"; 
 } 
 print "$0: Finished reading variables.\n"; 
 print "$0: Dumping variables...\n"; 
 foreach $Temp (keys(%Data)){ 
     print "$0:\t$Temp=$Data{$Temp}\n"; 
 } 
 print "$0: End.\n"; 

Issue_07_Win32
5. pipe_client

Download pipe_client

 open(CLIENT, "< //./pipe/My_Pipe") || die; 
 $Data = <CLIENT>; 
 print "$Data\n"; 
 close(CLIENT); 

Issue_07_Win32
6. More Samples on Win32

                                                                                                                                   

Last update 1999/02/20

All Rights Reserved - (C) 1997 - 2008 by The Labs.Com

Top of Page

The Labs.Com