Bonjour à toutes et à tous,

Je me suis mis à Perl il y a maintenant deux mois et j'ai quelques difficultés pour résoudre le problème suivant.
Voici mes données de départ (stockées dans un tableau):

show_1_5min 0 164 show_1_5min-0.00-1.64-F0-M-S0
show_1_5min 692 945 show_1_5min-6.92-9.45-F0-M-S1
show_1_5min 945 1736 show_1_5min-9.45-17.36-F0-M-S1
show_1_5min 1736 2537 show_1_5min-17.36-25.37-F0-M-S1
show_1_5min 2537 4187 show_1_5min-25.37-41.87-F0-M-S1
show_1_5min 4187 4748 show_1_5min-41.87-47.48-F0-M-S1
show_1_5min 4748 6354 show_1_5min-47.48-63.54-F0-M-S1
show_1_5min 6491 8258 show_1_5min-64.91-82.58-F0-M-S1
show_1_5min 8258 9440 show_1_5min-82.58-94.40-F0-M-S1
show_1_5min 9440 11123 show_1_5min-94.40-111.23-F0-M-S1
show_1_5min 11123 11459 show_1_5min-111.23-114.59-F0-M-S16
show_1_5min 11671 13438 show_1_5min-116.71-134.38-F0-M-S16
show_1_5min 13440 13906 show_1_5min-134.40-139.06-F0-M-S16
show_1_5min 13913 14951 show_1_5min-139.13-149.51-F0-M-S16
show_1_5min 14965 16004 show_1_5min-149.65-160.04-F0-M-S16
show_1_5min 16004 17918 show_1_5min-160.04-179.18-F0-M-S1
show_1_5min 17918 18901 show_1_5min-179.18-189.01-F0-M-S1
show_1_5min 18901 20389 show_1_5min-189.01-203.89-F2-M-S27
show_1_5min 20389 21806 show_1_5min-203.89-218.06-F2-M-S27
show_1_5min 21806 22796 show_1_5min-218.06-227.96-F2-M-S27
show_1_5min 22796 24324 show_1_5min-227.96-243.24-F2-M-S27
show_1_5min 24324 24847 show_1_5min-243.24-248.47-F2-M-S27
show_1_5min 24847 26162 show_1_5min-248.47-261.62-F0-M-S1
show_1_5min 26162 27060 show_1_5min-261.62-270.60-F0-M-S1
show_1_5min 27060 28064 show_1_5min-270.60-280.64-F0-M-S1
show_1_5min 28064 29198 show_1_5min-280.64-291.98-F0-M-S1
show_1_5min 29209 29998 show_1_5min-292.09-299.98-F0-M-S46


Les éléments en couleur (uniquement sur la première ligne pour l'exmple) représentent respectivement le début et la fin d'un intervalle temporel, le dernier est un identifiant de locuteur. Je procède à l'extraction de ces éléments grâce à des regexp pour produire les scalaires correspondants: $debut, $fin, $locuteur.

Mon problème est le suivant. Les exemples en vert montrent qu'à $locuteur identique, il y a des intervales redondants (donc superflus) dans le sens où le début d'un segment correspond à la fin du précédent. Je souhaiterais fusionner ces segments en un seul, le plus large possible (toujours à locuteur constant, si ce dernier change, alors pas de fusion).

Comment faire ?
Je suis un peu perdu et j'ai monté une usine à gaz avec un fichier temporaire.
Il doit y avoir une solution plus simple.

Merci d'avance