home *** CD-ROM | disk | FTP | other *** search
/ Organic Chemistry (8th Edition) / Image.iso / pc / organic / media / content / check_id.pl < prev    next >
Encoding:
Text File  |  2003-04-17  |  1.5 KB  |  89 lines

  1. #
  2. # check_id.pl
  3. # The program
  4. #    takes 'ent.xml' file from near self and gets info about entity files
  5. #    opens entity file in ENT folder and gets info about current entity in the file
  6. #    generate XML, XSL and HTM files in corresponding folders
  7. #
  8. # Comment: 
  9. #
  10.  
  11. $qwe='"';
  12. $reshetka='#';
  13. $nbsp=' ';
  14.  
  15. local $dir = "newfolder/";
  16. local $file;
  17. local $err = "err.txt";
  18.  
  19. local $stringline;
  20. local $id;
  21. local @idArr = ();
  22.  
  23. @file=glob("newfolder/*.xml");
  24.  
  25. open(ERR, ">$err") || die "can't open $err: $!";
  26.  
  27. foreach $file (sort @file)
  28. {
  29.     open(FILE, $file) || die "can't open $file: $!";
  30.     while (defined ($stringline = <FILE>))
  31.     {
  32.         if ($stringline =~ /<item / || $stringline =~ /<section /)
  33.         {
  34.             $id = &getAttrValue($stringline,'id');
  35.             push (@idArr, $id);
  36.         }
  37.     }
  38.     close(FILE);
  39.     
  40.     print ERR "$file\n\n";
  41.     for ($i=0; $i<$#idArr+1; $i++)
  42.     {
  43.         for ($j=$i+1; $j<$#idArr+1; $j++)
  44.         {
  45.             if ($idArr[$i] eq $idArr[$j])
  46.             {
  47.                 print ERR "$idArr[$i]\n";
  48.                 print "$idArr[$i]\n";
  49.             }
  50.         }
  51.     }
  52.     print ERR "\n";
  53.     @idArr = ()
  54. }
  55.  
  56. close(ERR);
  57.  
  58. print "All Done!..";
  59. <>;
  60.  
  61.  
  62.  
  63.  
  64. # sub function sections
  65. # getAttrValue: return value of attribute from the string
  66. sub getAttrValue
  67. {
  68.     local ($attrStr,$attr) = @_;
  69.     local @attrArr = ();
  70.     local $attrVal;
  71.     
  72.     $attrStr =~ s/<//;
  73.     $attrStr =~ s/>//;
  74.     
  75.     push (@attrArr, split /\s+/, $attrStr);
  76.     
  77.     for ($i=0; $i<$#attrArr+1; $i++)
  78.     {
  79.         if ($attrArr[$i] =~ /$attr/)
  80.         {
  81.             $attrVal = $attrArr[$i];
  82.             $attrVal =~ s/.*${attr}="(.*)".*/\1/;
  83.         }
  84.     }
  85.     return $attrVal;
  86. }
  87.