<p>I have the following line:</p>

<pre><code>"14:48 say;0ed673079715c343281355c2a1fde843;2;laka;hello ;)"
</code></pre>

<p>I parse this by using a simple regexp:</p>

<pre><code>if($line =~ /(\d+:\d+)\ssay;(.*);(.*);(.*);(.*)/) {
    my($ts, $hash, $pid, $handle, $quote) = ($1, $2, $3, $4, $5);
}
</code></pre>

<p>But the ; at the end messes things up and I don't know why. Shouldn't the greedy operator handle "everything"?</p>

Try making the first 3
```
(.*)
```
ungreedy
```
(.*?)
```