OK version x.3 Please just change these lines to make it work. The calling program test.pl fails on the assignment line:
Bareword "fname" not allowed while "strict subs" in use at utest line 8. Bareword "lname" not allowed while "strict subs" in use at utest line 9. Bareword "fname" not allowed while "strict subs" in use at utest line 12. Execution of test.pl aborted due to compilation errors. test.pl ------- #!/usr/bin/perl use strict; use UserInfo; my $ui = new UserInfo(); $ui->(fname) = "bob"; #dying here on assignment $ui->(lname) = "Bingham"; #change name $ui->(fname) = "robert"; print "ui: [" . $ui->full_name() . "]\n"; exit UserInfo.pm ----------- #!/usr/bin/perl package UserInfo; use strict; sub new { my $class = shift; my $self = { fname=>'', lname=>'' }; return bless $self, $class; } sub full_name { my $self = shift; return $self->{fname} . ' ' . $self->{lname}; } 1; ---------------------- > On Tuesday, September 30, 2003, at 06:51 PM, [EMAIL PROTECTED] wrote: > >> James and Bob, >> >> OK version x.2 >> - I want to create a user object with value initialized. > > I showed you how to do this in my last message. Go back and take a > look. > >> - Initialize/Change it anytime > > It's best to do this with accessor methods. You should have one for > each name. Can you figure those out from my full_name() example? > >> test.pl >> ------- > > What's still missing here? ;) > >> use UserInfo; > > Okay, UserInfo is better, but doesn't tell us much. I was thinking > something more like ComputerUser, DatabaseUser, GymUser, etc. > >> my $ui = new UserInfo(); >> $ui->(fname) = "bob"; >> $ui->(lname) = "Bingham"; >> >> #change name >> $ui->(fname) = "robert"; > > This works, but again, accessor methods would be better. > >> print "ui: [" . $ui->full_name() . "]\n"; >> >> exit > > This isn't a great habit. We don't need it, so leave it out. > >> UserInfo.pm >> ----------- >> #!/usr/bin/perl >> package UserInfo; > > Hmm, something is still missing here too... :D > >> sub new >> { my $class = shift; >> my $self = { fname, lname }; > > That's not what I said, is it? Your making an anonymous hash here and > storing a reference to it. Hashes have key value pairs. Take a look > at my code again. > > You also broke my initialization trick by changing the above line... > >> return bless $self, $class; >> } >> >> sub full_name >> { my $self = shift; >> return $self->{fname} . ' ' . $self->{lname}; >> } >> >> 1; > > Just shout if you need more help, but make sure you're looking at what > I'm sending you. The answers are in my last message, mostly. > > James > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]