Advertisement
Guest User

Untitled

a guest
Oct 1st, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.61 KB | None | 0 0
  1.  
  2. sub convert_string {
  3.     #converts strings with variables inside to python format
  4.     local ($line) = @_;
  5.     if ($line =~ /[^\\]\"(.*[^\\])"/){
  6.         $insideString = $1;
  7.         if ($insideString =~ /\$/){
  8.             #split by dollar sign
  9.             @array = split ('\$', $insideString);
  10.             @useful = ();
  11.             foreach $elem (@array){
  12.                 # if ($elem !~ /^\s*$/){
  13.                     push (@useful, $elem);
  14.                 # }
  15.             }
  16.             @finalsplit = ();
  17.             #first part doesnt have $ as split
  18.             $first_part = shift @useful;
  19.             $first_part =~ s/\s*$//;
  20.             push (@finalsplit, $first_part);
  21.             foreach $elem (@useful){
  22.                 #add dollar sign to start of each elem
  23.                 $elem = '$'.$elem;
  24.                 push (@finalsplit, split (' ', $elem));
  25.             }
  26.             @variablestack = ();
  27.             @returnStack = ();
  28.             foreach $elem (@finalsplit){
  29.                 if ($elem =~ /\$/){
  30.                     $elem =~ s/\$//;
  31.                     push (@variablestack, $elem);
  32.                     push (@returnStack, '{}');
  33.                 } else {
  34.                     push (@returnStack, $elem);
  35.                 }
  36.             }
  37.             $source = '';
  38.             foreach $elem (@variablestack){
  39.                 $source .= "$elem, ";
  40.             }
  41.             $source =~ s/,\s$//;
  42.             $string = join(' ', @returnStack);
  43.             $string =~ s/^\s*//;
  44.             $string =~ s/\\n//g;
  45.             $line = "'$string'.format($source)";
  46.         }
  47.     }
  48.     return $line;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement