The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/local/bin/perl
#
# $Header: /cvsroot/arsperl/ARSperl/example/Show_Menu.pl,v 1.1 1996/11/21 20:13:56 jcmurphy Exp $
#
# EXAMPLE
#    Show_Menu.pl
#
# DESCRIPTION
#    Use ars_GetCharMenuItems to obtain information about a menu.
#
# AUTHOR
#    jeff murphy
#
# 01/12/96
# 
# $Log: Show_Menu.pl,v $
# Revision 1.1  1996/11/21 20:13:56  jcmurphy
# Initial revision
#
#

use ARS;

# Parse command line parameters

($server, $username, $password, $menu_name) = @ARGV;
if(!defined($menu_name)) {
    print "usage: $0 [server] [username] [password] [menu name]\n";
    exit 1;
}

# Log onto the ars server specified

($ctrl = ars_Login($server, $username, $password)) || 
    die "can't login to the server";

# SUBROUTINE
#   IndPrint(indentation, string)
#
# DESCRIP
#   This subroutine will print a string with [indentation] number
#   of preceding TABS. 

sub IndPrint {
    my $ind = shift;
    my $s   = shift;
    my $i;

    if(defined($s)) {
	for($i = 0; $i < $ind; $i++) {
	    print "\t";
	}
	print $s;
    }
}
# SUBROUTINE
#   DumpMenu(arraypointer, indentation count)
# 
# DESCRIP
#   Recursive subroutine to dump menu and sub menu items

sub DumpMenu {
    my $m = shift;
    my $i = shift;
    my @m = @$m;
    my $name, $val;

    $i = 0 unless $i;

    while (($name, $val, @m) = @m) {
	if (ref($val)) {
	    IndPrint($i, "SubMenu: $name\n");
	    DumpMenu($val, $i+1);
	} else {
	    IndPrint($i, "Name: $name\t Value: $val\n");
	}
    }
}

# Retrieve info about menu.

DumpMenu(ars_GetCharMenuItems($ctrl, $menu_name));

# Log out of the server.

ars_Logoff($ctrl);