On 2013-10-16 17:44, DwigtArmyOfChampions wrote:
> Suppose I have the following Perl code:
> 
> defined or $_ = "" for my ($alabama, $alaska, $arizona, $arkansas,
> $california, $colorado, $connecticut, $delaware, $florida,
> $georgia, $hawaii, $idaho, $illinois, $indiana, $iowa, $kansas,
> $kentucky, $louisiana, $maine, $maryland, $massachusetts,
> $michigan, $minnesota, $mississippi, $missouri, $montana,
> $nebraska, $nevada, $new_hampshire, $new_jersey, $new_mexico,
> $new_york, $north_carolina, $north_carolina, $north_dakota, $ohio,
> $oklahoma, $oregon, $pennsylvania, $rhode_island, $south_carolina,
> $south_dakota, $tennessee, $utah, $vermont, $virginia, $washington,
> $west_virginia, $wisconsin, $wyoming) = split(/\n/, $results);
> 
> 
> I want to insert the following lines into my code:
> 
> $data{"alabama"} = $alabama;
> $data{"alaska"} = $alaska;
> $data{"arizona"} = $arizona;
> 
> ...
> 
> $data{"wisconsin"} = $wisconsin;
> $data{"wyoming"} = $wyoming;
> 
> Is there a way in Vim to parse that line of for loop code to create
> all fifty of those lines?

(ignoring the wrapping introduced by my mailer)

I'd do a couple passes:

  :t.              " copy the one line to a new line
  0df(             " delete through the opening paren
  f)D              " delete after the closing paren
             " at this point, we should have just the variables
  :s/,\s*/\r/g     " put each on its own line, remove commas
             " highlight the resulting lines with "V"
  :'<,'>s/\$\(.*\)/$data{"\1"} = &;
             " transform the lines into your desired format


-tim



-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to