perchè non riesco a fare funzionare bene questa funzione?

deve prendermi il testo contenuto tra " " , ma solo quello che incontra la prima volta dall'inizio della stringa.

es.
la stringa é contenuta nella variabile $_ ed è del tipo:
(campo_1:"dato_1"; campo_2:dato_2; campo_3:"dato_3"; campo_4:dato_4


la funzione che uso è:
if(($s) = $_ =~ /campo_1:\"(.+)\"/){}


il risultato in $s è del tipo:
"dato_1"; campo_2:dato_2; campo_3:"dato_3"

quindi considera gli apici più esterni e non i primi due

perchè???

come faccio?