#!/usr/bin/perl use strict; use warnings; use IO::All; use Data::Dumper; my @lines = io('file.txt')->chomp->slurp; for my $i (0 .. $#lines) { if ($lines[$i] =~ /operating_conditions/) { # split line based on white space my @elements = split /\s+/, $lines[$i]; # remove first and last character of the string $elements[2] =~ s/^.(.*).$/$1/; # Insert string at position 12, replace 0 elements. splice @lines, $i + 5, 0, " default_".$elements[1]." : ".$elements[2].""; last; # break loop } next; } # print Dumper \@lines; io('out.txt')->appendln($_) for @lines; __END__ $ perl test.pl $ cat out.txt library(and_gate) { delay_model : table_lookup ; date : "Fri Mar 15 03:44:39 " ; time_unit : 1ms ; voltage_unit : 1V ; current_unit : 1A ; operating_conditions ("AB0.5v45c") { process : 1 ; temperature : 45 ; voltage : 0.5 ; } default_operating_conditions : "AB0.5v45c" input_voltage(default) { vi : 0 ; vh : 0.5 ; vim : 0 ; vin : 0.5 ; } }