#!/usr/bin/perl
use strict;
use warnings;
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	#lecture du display
	my $display = "/home/ducheman/myskill/display_new_ONC25_vir.drf";
	open DISP_FILE, "$display" or die" Can't open $display \n";
	my @disp = <DISP_FILE>;
	close DISP_FILE;
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	
	my $disp_lgn = scalar@disp;
	my @layer_tf =();
	my @layers =();
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	#on recupere dans un tableau tous les layers
	for (my $j=0 ; $j<$disp_lgn ; $j++) {
		if ( $disp[$j] =~ /display\s+\w+\s+\w+\s+\w+\s+\w+\s+\w+\s+\w+/) {
#		@layer_tf =(@layer_tf , );
		@layer_tf=(@layer_tf ,  $disp[$j]);
		};#end if
	};#end for
#	print "@layer_tf";
	for ( my $k=0; $k < scalar(@layer_tf); $k++) {
	my $ligne2 =$layer_tf[$k];
	$ligne2 =~ s/\(//;
	$ligne2 =~ s/\)//;
	$ligne2 =~ s/\s+/_/;
	$ligne2 =~ s/\s+/_/;
	$ligne2 =~ s/\s+/_/;
	$ligne2 =~ s/\s+/_/;
	$ligne2 =~ s/\s+/_/;
	$ligne2 =~ s/\s+/_/;
	$ligne2 =~ s/\s+/_/;
#	print "$ligne2";
	my @tab = split /_/, $ligne2;
#	print "@tab";
#	print "$tab[2]\n";
	my $lay= "$tab[2]\n";
	@layers=(@layers , $lay);
	}
#	print "@layers";
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	
	
	
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	#lecture fichier de regle
       	open FILE, "<onc25_gen.rul" or die "onc25_gen.rul n'existe pas!\n";
      	 #on place le contenu dans un tableau de ligne
      	 my @lignes = <FILE>;
       	close FILE;
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	

	my @result1=();
	my @result2=();
	my $lgn = scalar@lignes;
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	#traitement du fichier de regle
	
	for (my $i=0 ; $i<$lgn ; $i++) {
		if ( $lignes[$i] =~ /^'\w+\'/) {
		my $data =$lignes[$i];
		$data =~ s/\'//;
		$data =~ s/\'\s\{//;
		@result1=(@result1 , $data);
		};#end if	 
	};#end for
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	
	
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	#rajout des lignes necessaire pour filtrer les layers
	my $lgn2 = scalar@result1;
	@result1 = sort @result1;
	
	for (my $i=0 ; $i<$lgn2 ; $i++) {
	
	chomp($result1[$i]);
	my @decoupe = split /_/, $result1[$i];
#	print "@decoupe\n";
#	my $layer=$result1[$i];
	my $layer= "";
	if ( $decoupe[1] =~ "to") {
		my $dec1=$decoupe[0];
		if ( layer_exists($dec1,@layers) == 0) {$dec1=""}
		my $dec2=$decoupe[2];
		if ( layer_exists($dec2,@layers) == 0) {$dec2=""}
		if ( $dec1 eq $dec2) {
		$layer= "$dec1";}
		else {
		$layer= "$dec1 $dec2";}
	}
	elsif ( $decoupe[1] =~ "ou") {
		my $dec1=$decoupe[0] ;
		if ( layer_exists($dec1,@layers) == 0) {$dec1=""}
		my $dec2=$decoupe[2];
		if ( layer_exists($dec2,@layers) == 0) {$dec2=""}
		if ( $dec1 eq $dec2) {
		$layer= "$dec1";}
		else {
		$layer= "$dec1 $dec2";}
	}
	elsif ( $decoupe[1] =~ "nc") {
		my $dec1=$decoupe[0] ;
		if ( layer_exists($dec1,@layers) == 0) {$dec1=""}
		my $dec2=$decoupe[2];
		if ( layer_exists($dec2,@layers) == 0) {$dec2=""}
		if ( $dec1 eq $dec2) {
		$layer= "$dec1";}
		else {
		$layer= "$dec1 $dec2";}
	}
		elsif ( $decoupe[1] =~ "ui") {
		my $dec1=$decoupe[0] ;
		if ( layer_exists($dec1,@layers) == 0) {$dec1=""}
		my $dec2=$decoupe[2];
		if ( layer_exists($dec2,@layers) == 0) {$dec2=""}
		if ( $dec1 eq $dec2) {
		$layer= "$dec1";}
		else {
		$layer= "$dec1 $dec2";}
	}
		elsif ( $decoupe[1] =~ "os") {
		my $dec1=$decoupe[0] ;
		if ( layer_exists($dec1,@layers) == 0) {$dec1=""}
		my $dec2=$decoupe[2];
		if ( layer_exists($dec2,@layers) == 0) {$dec2=""}
		if ( $dec1 eq $dec2) {
		$layer= "$dec1";}
		else {
		$layer= "$dec1 $dec2";}
	}
		elsif ( $decoupe[1] =~ "in") {
		my $dec1=$decoupe[0] ;
		if ( layer_exists($dec1,@layers) == 0) {$dec1=""}
		my $dec2=$decoupe[2];
		if ( layer_exists($dec2,@layers) == 0) {$dec2=""}
		if ( $dec1 eq $dec2) {
		$layer= "$dec1";}
		else {
		$layer= "$dec1 $dec2";}
	}

	else {my $dec1=$decoupe[0] ;
	if ( layer_exists($dec1,@layers) == 0) {$dec1=""}
	$layer= "$dec1";}
	my $res=$result1[$i];
	if ( $layer ne "" ) {
	if ( $layer =~ /v1/ ) { $layer =~ s/v1/v1 m1 m2/}
	if ( $layer =~ /v2/ ) { $layer =~ s/v2/v2 m2 m3/}
	if ( $layer =~ /v3/ ) { $layer =~ s/v3/v3 m3 m4/}
	if ( $layer =~ /v4/ ) { $layer =~ s/v4/v4 m4 m5t30/}
	@result2=(@result2 ,"$res\n" , "RVE Show Layers: $layer\n" )}
	};#end for
#	print "@result2";	
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	
	my $chemin="/home/ducheman/test.cto";
	open my($fichier), ">$chemin";
	print $fichier @result2;
	close $fichier;
	
	
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	sub layer_exists {
   		my($element,@array) = @_;
		my $result = 0;
		foreach my $lign2 (@array) { 
			chomp($lign2);
			if ($lign2 eq $element) {
			$result=1;
			}
		}	
	 	return $result;
	}
