in reply to Create an array from Optionmenu variables

Can someone please help get me pointed in the right direction?

Get rid of all Tk stuff, and define your problem in terms of subs and data structures :)

  • Comment on Re: Create an array from Optionmenu variables

Replies are listed 'Best First'.
Re^2: Create an array from Optionmenu variables
by Anonymous Monk on Mar 13, 2012 at 06:06 UTC

    Add this to the end of sub input_lam_data

    use Tk::ObjScanner; use Tk::WidgetDump; Tk::ObjScanner::scan_object( { q{\%ort_optmen} => \%ort_optmen , q{\%t_optmen} => \%t_optmen , q{\%ply_lab} => \%ply_lab , q{\%mat_optmen} => \%mat_optmen , } ); $mw->WidgetDump;

    Its diagnostical, see Tk::ObjScanner and Tk::WidgetDump

      I don't have ObjScanner.pm.

Re^2: Create an array from Optionmenu variables
by shortyfw06 (Beadle) on Mar 13, 2012 at 14:59 UTC

    I'm not sure I understand what you're saying?... Let's say I have the following

    my $n = 4; my $mat1 = "PW"; my $t1 = "0.0077"; my $ort1 = "45"; my $mat2 = "PW"; my $t2 = "0.0077"; my $ort2 = "45"; my $mat3 = "8HS"; my $t3 = "0.0147"; my $ort3 = "0"; my $mat4 = "PW"; my $t4 = "0.0077"; my $ort4 = "0";

    Now I want to sort it as described in the original post. How do I do this efficiently? My first thought would be to write several if statements but I imagine there must be a better way to go about this. Thanks for the help.

      I'm not sure I understand what you're saying?... Let's say I have the following

      Um, that is not an array, or three arrays, you can't sort that. I too am completely unsure of what you're asking about. Does this help?

      #!/usr/bin/perl -- use strict; use warnings; use Data::Dump; Main( @ARGV ); exit( 0 ); sub Main { my @choice = Ply( 0, 0, 0 ); dd\@choice; push @choice, Ply( 1, 1, 1 ); push @choice, Ply( 2, 2, 3 ); dd\@choice; print "Combinations ", int( @choice ),"\n"; print "Materials ", CountMaterials( \@choice ),"\n"; } sub CountMaterials { my( $co ) = @_; my %seen; for my $item ( @$co ){ my $mat = $item->[0]; $seen{ $mat }++; } return scalar keys %seen; } BEGIN { my @Thickness = ( "0.0077","0.0147","0.0054"); my @Material = ( "PW","8HS","Tape"); my @Orientation = ("-45","0","45","90"); sub Ply { my( $mat, $thi, $ori ) = @_; return [ $Material[ $mat ], $Thickness[ $thi ], $Orientation[ $ori ], ]; } } __END__ [["PW", 0.0077, -45]] [["PW", 0.0077, -45], ["8HS", 0.0147, 0], ["Tape", 0.0054, 90]] Combinations 3 Materials 3

      All you have to do is write a function to query the target option menu and return an array like CountMaterials expects