Adam Jimerson wrote:
I am working on a program that will act as a contact manager of sorts, it
uses two hashes to store everything (although the second one is commented
out because I am not ready to work with it). I am using the format function
to display everything but I don't know how to get it to show the keys to the
hash which is where the names are. Here is my code so far to show what I am
talking about:
,----[ CODE ]
#!/usr/bin/perl
use warnings;
use strict;
#define hashes
my %phone_numbers = ();
#my %email_address = ();
my $full_name;
my $phone_number;
print "CSCC Workstudy/Co-Op/Intern Contact Manager\n";
print "Version 0.6\n";
if ("@ARGV" eq 'add') {
That should be:
if ($ARGV[0] eq 'add') {
dbmopen(%phone_numbers, "$ENV{HOME}/phone_numbers", 0766) || die "Can't
open database: $!\n"; #Open database for writing
perldoc -f dbmopen
dbmopen HASH,DBNAME,MASK
[This function has been largely superseded by the "tie"
function.]
perldoc -f tie
perldoc AnyDBM_File
perldoc DB_File
perldoc GDBM_File
perldoc NDBM_File
perldoc ODBM_File
perldoc SDBM_File
print "\nFull Name: ";
chomp($full_name = <STDIN>);
print "Phone Number: ";
chomp($phone_number = <STDIN>);
$phone_numbers { $full_name } = $phone_number;
dbmclose(%phone_numbers) || die "Can't close database $!\n"; #saves and
closes the database
exit 0;
} elsif ("@ARGV" eq 'view') {
dbmopen(%phone_numbers, "$ENV{HOME}/phone_numbers", 0666) || die "Can't
open database: $!\n"; #Open database for reading
foreach (keys %phone_numbers) {
write;
}
exit 0;
} else {
die "Usage: $0 [add|view]\n";
}
format STDOUT =
@<<<<<<<<<<<<<<< @##-###-####
@##-###-#### is not a valid format string, that is a three digit number
followed by the literal string '-###-####'.
$phone_numbers{$_} #needs to print the keys of the hash for the name, and
values for the phone number so it will be like this "Some Name 555-555-5555"
.
format STDOUT_TOP =
Full Name Phone Numbers
========= =============
.
You probably want something more like this:
#!/usr/bin/perl
use warnings;
use strict;
use DB_File;
print "CSCC Workstudy/Co-Op/Intern Contact Manager\n",
"Version 0.6\n";
@ARGV == 1 or die "Usage: $0 [add|view]\n";
# define hashes
tie my %phone_numbers, 'DB_File', "$ENV{HOME}/phone_numbers"
or die "Can't open $ENV{HOME}/phone_numbers: $!\n";
#tie my %email_address, 'DB_File', "$ENV{HOME}/email_address"
# or die "Can't open $ENV{HOME}/email_address: $!\n";
if ( $ARGV[ 0 ] eq 'add' ) {
print "\nFull Name: ";
chomp( my $full_name = <STDIN> );
print "Phone Number: ";
chomp( my $phone_number = <STDIN> );
$phone_numbers{ $full_name } = join '-', $phone_number =~
/(\d{3})\D*(\d{3})\D*(\d{4})$/;
}
elsif ( $ARGV[ 0 ] eq 'view' ) {
for ( keys %phone_numbers ) {
write;
}
}
format STDOUT_TOP =
Full Name Phone Numbers
========= =============
.
format STDOUT =
@<<<<<<<<<<<<<<< @>>>>>>>>>>>
$_, $phone_numbers{$_}
.
untie %phone_numbers;
exit 0;
__END__
John
--
Those people who think they know everything are a great
annoyance to those of us who do. -- Isaac Asimov
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/