$ perl -c pm_11105228.pl Unrecognized escape \v passed through at pm_11105228.pl line 47. Unrecognized escape \v passed through at pm_11105228.pl line 72. Scalar value @vol_temp[1] better written as $vol_temp[1] at pm_11105228.pl line 38. Scalar value @vol_temp[0] better written as $vol_temp[0] at pm_11105228.pl line 39. Scalar value @vol_temp[0] better written as $vol_temp[0] at pm_11105228.pl line 41. Scalar value @vol_temp[0] better written as $vol_temp[0] at pm_11105228.pl line 42. pm_11105228.pl syntax OK #### my $file_name2 = "$in_macro/lib_pg/$in_macro\_$process_two$volt_1\v$temp\_pg.lib"; #### my $file_name2 = "$in_macro/lib_pg/$in_macro/_$process_two$volt_1/v$temp/_pg.lib"; #### my $file_name1 = "lib_pg/$in_macro"; my $file_name2 = "lib_pg/$in_macro"; #### my @data = ; for (my $j=0; $j<=$#lib_file-1; $j++) { my $libline = $lib_file[$j]; ... do stuff with $libline ... } #### while (my $libline = <$LIBFILE>) { ... do stuff with $libline ... } #### if ($pvt_name =~m/^([a-z].*)([0-9]p.*)/) { my $process = $1; my $process_two = substr($process, 0, 2); #got ff from ffgp my $vol_temp = $2; my @vol_temp = split ('v',$vol_temp); #### my $process_two = $1; $process_two =~ s/^(..).*/$1/; # destroys the old value of $2! #### if ($pvt_name =~m/^([a-z].*)([0-9]p.*)/) { # We capture all the data we want my ($process, $vol_temp) = ($1, $2); # now we can just do the work without worrying about using another regular expression my $process_two = substr($process, 0, 2); #got ff from ffgp my @vol_temp = split ('v',$vol_temp); #### use strict; use warnings; my $in_macro = $ARGV[0]; my $alpha_config = $ARGV[1]; if ($#ARGV!=1) { print "USAGE :: perl bias_vol_chk.pl <> <> \n\n"; exit(1); } my $pvt_name; my $bias_voltage; my @bias_voltage; open my $ALPHAFILE, "<", $alpha_config or die "Can not open config_FILE"; while (my $line = <$ALPHAFILE>) { chomp $line; print "alpha[$.]: $line \n"; if ($line =~m/\s*cornerData\((.*)\)\s*\{(.*),TEMP\s*(.*)/g) { $pvt_name = $1; $bias_voltage = $2; print " PVT_NAME: $pvt_name\n"; print " BIAS_V: $bias_voltage\n"; @bias_voltage = split (',',$bias_voltage); if ($pvt_name =~m/^([a-z].*)([0-9]p.*)/) { my ($process, $vol_temp) = ($1, $2); my $process_two = substr($process, 0, 2); #got ff from ffgp my @vol_temp = split ('v',$vol_temp); my $temp = $vol_temp[1]; my $volt_1 = $vol_temp[0]; $volt_1 =~ s/[0]$//; $vol_temp[0] =~ s/[0]$//; my $volt_2 = $vol_temp[0]; my @volt_2 = split('p',$volt_2); $volt_2 = join('.',@volt_2); #replacing p with . my $file_name1 = "lib_pg/$in_macro"; print " FNAME 1: $file_name1\n"; if (-e $file_name1) { my $data = handle_library_file($file_name1); # Do something with the $data } my $file_name2 = "lib_pg/$in_macro"; print " FNAME 2: $file_name2\n"; if (-e $file_name2) { my $data = handle_library_file($file_name2); # Do something with the $data } } } } sub handle_library_file { my $file_name = shift; open my $LIBFILE, "<", $file_name or die "Can not open INPUT liberty file $file_name: $!"; while (my $libline = <$LIBFILE>) { chomp $libline; if ($libline=~m/^\s*voltage_map\((.*)\)/g) { my @volt_array = ("$1"); my $lib_volt = $1; my @lib_volt = split (',',$lib_volt); print "FILE lib_volt: @lib_volt \n"; } } # After gathering and processing the data, return it! } #### $ perl pm_11105228.pl ffg0p82v100c mnk_alpha alpha[1]: put cornerData(ffg0p82v100c) {VDD 0.825,VDDQN 1.17,VDDM 1.17,TEMP 100} PVT_NAME: ffg0p82v100c BIAS_V: VDD 0.825,VDDQN 1.17,VDDM 1.17 FNAME 1: lib_pg/ffg0p82v100c FILE lib_volt: VDDQN 1.1 FILE lib_volt: VDDM 1.1 FILE lib_volt: VSS 0 FNAME 2: lib_pg/ffg0p82v100c FILE lib_volt: VDDQN 1.1 FILE lib_volt: VDDM 1.1 FILE lib_volt: VSS 0 alpha[2]: put cornerData(ssg0p905v100c) {VDD 0.825,VDDQN 1.1,VDDM 0.17,TEMP 100} PVT_NAME: ssg0p905v100c BIAS_V: VDD 0.825,VDDQN 1.1,VDDM 0.17 FNAME 1: lib_pg/ffg0p82v100c FILE lib_volt: VDDQN 1.1 FILE lib_volt: VDDM 1.1 FILE lib_volt: VSS 0 FNAME 2: lib_pg/ffg0p82v100c FILE lib_volt: VDDQN 1.1 FILE lib_volt: VDDM 1.1 FILE lib_volt: VSS 0 alpha[3]: put cornerData(tt0p40v100c) {VDD 0.825,VDDQN 1.07,VDDM 2.15,TEMP 100} PVT_NAME: tt0p40v100c BIAS_V: VDD 0.825,VDDQN 1.07,VDDM 2.15 FNAME 1: lib_pg/ffg0p82v100c FILE lib_volt: VDDQN 1.1 FILE lib_volt: VDDM 1.1 FILE lib_volt: VSS 0 FNAME 2: lib_pg/ffg0p82v100c FILE lib_volt: VDDQN 1.1 FILE lib_volt: VDDM 1.1 FILE lib_volt: VSS 0 alpha[4]: