#!/usr/bin/perl package Prompt::ReadKey::Util; use strict; use warnings; use base qw(Exporter); our @EXPORT = qw(_deref _get_arg _get_arg_or_default); sub _deref ($) { return unless @_; my $ret = shift; if ( wantarray and (ref($ret)||'') eq 'ARRAY' ) { return @$ret; } else { return $ret; } } sub _get_arg ($\%) { my ( $name, $args ) = @_; return unless exists $args->{$name}; _deref( $args->{$name} ); } sub _get_arg_or_default { my ( $self, $name, %args ) = @_; if ( exists $args{$name} ) { _get_arg($name, %args); } else { my $method = ( ( $name =~ m/^(?: prompt | options )$/x ) ? "default_$name" : $name ); if ( $self->can($method) ) { return _deref($self->$method()); } } } __PACKAGE__ __END__