2

以下に示すように、open 3 を実行しています

   <May 7, 2013 1:21:59 AM IST> <Info> <Security> <BEA-090905> <Disabling CryptoJ JCE Provider self-integrity check for better startup performance. To enable this check, specify -Dweblogic.security.allowCryptoJDefaultJCEVerification=true> 
    <May 7, 2013 1:21:59 AM IST> <Info> <Security> <BEA-090906> <Changing the default Random Number Generator in RSA CryptoJ from ECDRBG to FIPS186PRNG. To disable this change, specify -Dweblogic.security.allowCryptoJDefaultPRNG=true> 
    <May 7, 2013 1:21:59 AM IST> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "CN=CertGenCA,OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=ka". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.> 

私の予想される文字列

<Composites>
    i=0
    compositedetail=swlib:soaprov/soacomposite=eis/FileAdapter#eis/FileAdapter#
    swlib:soaprov/soacomposite=eis/FileAdapter#eis/FileAdapter# starts with swlib
    </Composites>

BEA セキュリティからの行を無視して、予想される文字列だけを出力したいのですが、どうすればよいですか?

私の $command = $java . 「-クラスパス」。$クラスパス . ' ' . $secOptions . ' ' . $className . ' ' . $serviceUrl . ' ' . $composites;

 local (*HANDLE_IN, *HANDLE_OUT, *HANDLE_ERR);

      my $pid = open3( *HANDLE_IN, *HANDLE_OUT, *HANDLE_ERR, "$command") ;
     my $nextLine;
    while(<HANDLE_OUT>) {       
        $nextLine= $_;  
        print $nextLine;


}
4

1 に答える 1

1

そのために正規表現を使用できます。もちろん、ある種の xml パーサーも使用できますが、この場合はやり過ぎです。

my $debug = 1;#set 1 for debugging
while(my $nextLine=<HANDLE_OUT>) {       
      chomp($nextLine);  
      if ($nextLine =~ m!<BEA-!){
           print "Skipping this line (BEA): |$nextLine|\n" if $debug;
        }
        print $nextLine."\n";
于 2013-05-14T09:51:02.210 に答える