(command.CommandList children: [ (command.ShFunction name: _perlmodules body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-P>} {(DQ ($ Id.VSub_DollarName '$prefix'))} {<-W>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C { (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<perl>} ) ) } { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> bracket_op: (bracket_op.ArrayIndex expr: {<Id.Lit_Digits 0>} ) suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) <'/../helpers/perl'> } {<modules>} {($ Id.VSub_DollarName '$cur')} ) ) ) } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [11] ) ] ) (C {<__ltrim_colon_completions>} {(DQ ($ Id.VSub_DollarName '$prefix') ($ Id.VSub_DollarName '$cur'))} ) ] ) ) (command.ShFunction name: _perlfunctions body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-P>} {(DQ ($ Id.VSub_DollarName '$prefix'))} {<-W>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C { (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<perl>} ) ) } { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> bracket_op: (bracket_op.ArrayIndex expr: {<Id.Lit_Digits 0>} ) suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) <'/../helpers/perl'> } {<functions>} {($ Id.VSub_DollarName '$cur')} ) ) ) } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [85] ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _perl body: (BraceGroup children: [ (C {<local>} {<cur>} {<prev>} {<words>} {<cword>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_init_completion>} {<-n>} {<Id.Lit_Colon ':'>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<local>} {<Id.Lit_VarLike 'prefix='> (DQ )} {<temp>} {<optPrefix>} {<optSuffix>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: {<-> <Id.Lit_Other '?'> <Id.Lit_Other '*'>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$cur')} spids: [212] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name temp> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 2>} ) ) } spids: [216] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name temp> suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>}) ) } spids: [226] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$prev')} right: {<Id.BoolUnary_d -d>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$cur')} right: {<t> <Id.Lit_Other '*'>} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: {<-dt>} spids: [259] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name cur> suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 1>}) ) } spids: [263] ) ] ) ] spids: [234 256] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:optPrefix) op: assign_op.Equal rhs: {<-P> ($ Id.VSub_DollarName '$prev')} spids: [274] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:optSuffix) op: assign_op.Equal rhs: {<'-S/'>} spids: [279] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$prev')} spids: [283] ) ] ) ] spids: [192 209] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{<-D>} {<-e>} {<-E>} {<-i>} {<-F>} {<-l>}] action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [298 309 317 -1] ) (case_arm pat_list: [{<-I>} {<-x>}] action: [ (C {<local>} {<Id.Lit_VarLike 'IFS='> (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] multiline: F ) } ) (C {<compopt>} {<-o>} {<filenames>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-d>} {($ Id.VSub_DollarName '$optPrefix')} {($ Id.VSub_DollarName '$optSuffix')} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [341] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [320 323 370 -1] ) (case_arm pat_list: [{<-m>} {<-M>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name cur> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<->} ) ) ) } spids: [379] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: <Id.VSub_Name cur> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {($ Id.VSub_DollarName '$temp')} ) ) ) } spids: [389] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$temp'))} spids: [399] ) ] ) (C {<_perlmodules>} {($ Id.VSub_Number '$1')}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [373 376 415 -1] ) (case_arm pat_list: [{<-V>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$cur')} right: {<Id.Lit_Colon ':'> <Id.Lit_Other '*'>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name cur> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: { (word_part.ExtGlob op: <Id.ExtGlob_Plus '+('> arms: [{<':'>}] ) } ) ) ) } spids: [439] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: <Id.VSub_Name cur> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {($ Id.VSub_DollarName '$temp')} ) ) ) } spids: [451] ) ] ) (C {<local>} {<Id.Lit_VarLike 'IFS='> (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] multiline: F ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-P>} {(DQ ($ Id.VSub_DollarName '$prefix'))} {<-W>} { (SQ < '$( $1 -MConfig -e "print join \\"\\\\n\\",\n' > <' keys %Config::Config" 2>/dev/null )'> ) } {<-->} {(DQ ($ Id.VSub_DollarName '$temp'))} ) ) } ] ) } spids: [469] ) ] ) (C {<__ltrim_colon_completions>} { (DQ ($ Id.VSub_DollarName '$prefix') ($ Id.VSub_DollarName '$temp') ) } ) ] spids: [422 436] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [418 419 518 -1] ) (case_arm pat_list: [{<-d>} {<-dt>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$cur')} right: {<Id.Lit_Colon ':'> <Id.Lit_Other '*'>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name cur> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<':'>} ) ) ) } spids: [544] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$prefix') (braced_var_sub token: <Id.VSub_Name cur> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {($ Id.VSub_DollarName '$temp')} ) ) ) } spids: [554] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: {(DQ <'Devel::'> ($ Id.VSub_DollarName '$temp'))} spids: [565] ) ] ) (C {<_perlmodules>} {($ Id.VSub_Number '$1')}) ] spids: [527 541] ) ] ) ] spids: [521 524 580 -1] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: {<-> <Id.Lit_Other '*'>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} { (SQ <'-C -s -T -u -U -W -X -h -v -V -c -w -d -D -p\n'> <' -n -a -F -l -0 -I -m -M -P -S -x -i -e'> ) } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [606] ) ] ) ] spids: [587 603] ) ] else_action: [(C {<_filedir>})] ) ] ) ) (C {<complete>} {<-F>} {<_perl>} {<perl>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _perldoc body: (BraceGroup children: [ (C {<local>} {<cur>} {<prev>} {<words>} {<cword>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_init_completion>} {<-n>} {<Id.Lit_Colon ':'>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<local>} {<Id.Lit_VarLike 'prefix='> (DQ )} {<temp>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: {<-> <Id.Lit_Other '?'> <Id.Lit_Other '*'>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$cur')} spids: [716] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name temp> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 2>} ) ) } spids: [720] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name temp> suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>}) ) } spids: [730] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$prev')} spids: [738] ) ] ) ] spids: [696 713] ) ] ) (C {<local>} {<Id.Lit_VarLike 'perl='> (DQ (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary tok:<Id.VOp1_Percent '%'> arg_word:{<doc>}) ) ) } ) (command.AndOr ops: [Id.Op_DPipe Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$perl')} right: {($ Id.VSub_Number '$1')} ) ) (command.Pipeline children: [ (command.Simple words: [{<type>} {($ Id.VSub_DollarName '$perl')}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:perl) op: assign_op.Equal rhs: (word.Empty) spids: [781] ) ] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{<-h>} {<-V>} {<-n>} {<-o>} {<-M>} {<-w>} {<-L>}] action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [792 805 813 -1] ) (case_arm pat_list: [{<-d>}] action: [ (C {<_filedir>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [816 817 828 -1] ) (case_arm pat_list: [{<-f>}] action: [ (C {<_perlfunctions>} {($ Id.VSub_DollarName '$perl')}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [831 832 845 -1] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: {<-> <Id.Lit_Other '*'>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(SQ <'$( _parse_help "$1" -h )'>)} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [871] ) ] ) ] spids: [852 868] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: { (word_part.ExtGlob op: <Id.ExtGlob_At '@('> arms: [{<Id.Lit_Other '*'> <'/'>} {<'[.~]'>}] ) <Id.Lit_Other '*'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_perlmodules>} {($ Id.VSub_DollarName '$perl')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$cur')} right: {<p> <Id.Lit_Other '*'>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} { (SQ < '$( PERLDOC_PAGER=/bin/cat "$1" -u perl | \\\n' > <' sed -ne "/perl.*Perl overview/,/perlwin32/p" | \\\n'> < ' awk "\\$NF=2 && \\$1 ~ /^perl/ { print \\$1 }" )' > ) } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [948] ) ] ) ] spids: [931 945] ) ] ) ] spids: [902 923] ) ] ) (C {<_filedir>} {(SQ <'p@([lm]|od)'>)}) ] ) ] ) ) (C {<complete>} {<-F>} {<_perldoc>} {<-o>} {<bashdefault>} {<perldoc>}) ] ) ] )