in reply to Re^3: How to return values from a hash?
in thread How to return values from a hash?
That is called in sub 'by_mp' that takes care of init stuff and handles accessing the field: _by_mp in this case:sub _Var ($$$;$) { # Wrkhorse code for manu +fctrd Vars #note $p->obj, $vn=varname, $wa=wantarray val my ($__, $p, $vn, $wa)=@$_; $_=$__; '$_' my $v = $p->{$vn}; # value my $rfv = ref $v; # type(ref) of var ...... } elsif ($rfv == 'HASH') { my $subvar=$arg; ## 1 var w/hash is is a key $p->{$vn}{$subvar}=$_[0] if @_; ## another? =>assign va +lue return $p->{$vn}{$subvar}; <- returns has here.
That is called in the level of code where I detect the problem:sub by_mp(;$) { my $map = shift; my $c = ref $map || $map; ...init... my $arg_lvh = $map->_by_mp($arg); if (ref $arg_lvh) { $arg_lvh->fs_mp($arg); return $arg_lvh; #<----seems to return from here } my $devno = (stat $arg)[0]; $arg_lvh = $map->by_devno($devno); return undef unless $arg_lvh; die P "by_mp: by_devno(%s) returned %s, of type \"%s\", not a ref\ +n", $devno, $arg_lvh, ref $arg_lvh unless ref $arg_lvh; $map->_by_mp($arg, $arg_lvh); $arg_lvh->fs_mp($arg); return $arg_lvh; }
sub lvm_BaseDiff_Lvh_4_Base_opt_mp ($;$) { my $lvm = shift; my ($base_lvh, $lv_mp) = @_; my $diff_dev = pathcat("/dev", $base_lvh->vg_name, $base_lvh->lv_name . ".diff"); #TPe "diff_dev=%s", $diff_dev; # next is call to by_mp -- here is where I don't seem to be #getting a reference back. my $bdiff_lvh = $lvm->by_mp($lv_mp.".diff") if @_; $bdiff_lvh = $lvm->by_devpath($diff_dev) unless ref $bdiff_lvh; ## commented version below was orig -- trying above -- ## seems to work better, but seems a bit random... #my $bdiff_lvh = (@_ && $lvm->by_mp($lv_mp . ".diff") or # $lvm->by_devpath($diff_dev)); die P "Can't find \"diff\" dir for vol %s by mount or device path" +, $lv_mp unless ref $bdiff_lvh; $bdiff_lvh->fs_mp($lv_mp) unless $bdiff_lvh->fs_mp; $bdiff_lvh->fs_type_name($base_lvh->fs_type_name) unless $bdiff_lvh->fs_type_name;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: How to return values from a hash?
by CountZero (Bishop) on Mar 30, 2013 at 10:02 UTC | |
by perl-diddler (Chaplain) on Mar 30, 2013 at 15:06 UTC | |
by Athanasius (Archbishop) on Mar 31, 2013 at 07:16 UTC | |
by perl-diddler (Chaplain) on Apr 21, 2013 at 10:26 UTC | |
|
Re^5: How to return values from a hash?
by BrowserUk (Patriarch) on Mar 30, 2013 at 04:38 UTC | |
by perl-diddler (Chaplain) on Mar 30, 2013 at 14:52 UTC | |
|
Re^5: How to return values from a hash?
by poj (Abbot) on Mar 30, 2013 at 08:35 UTC | |
by perl-diddler (Chaplain) on Mar 30, 2013 at 14:46 UTC |