I tend to use goto quite liberally. For example, below, I want to exit the sub if the $project does not have the IconView initialized yet. Also, if no items were selected, I want to return. In both cases I want to give the same warning and return.
It is possible to avoid using goto here:
- eval the get_selected_items and check for error
- do a return instead of goto
- ...
But, to me, this seems like it is much easier (and clearer) to use goto instead of coming up with all possible structures and so on just to avoid using goto.
goto NO_EXIF unless (defined($project->{LG}->{IMG_ICONVIEW}));
my @img_selected = $project->{LG}->{IMG_ICONVIEW}->get_selected_it
+ems();
my @dock_selected = $project->{LG}->{DOCK_ICONVIEW}->get_selected_
+items();
## check that any images are selected
if (scalar(@img_selected) + scalar(@dock_selected) < 1) {
NO_EXIF:
GUIFunctions->warn("Some message");
return;
}