⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgi.pm

📁 MSYS在windows下模拟了一个类unix的终端
💻 PM
📖 第 1 页 / 共 5 页
字号:
    my($label,$value,@other) = rearrange([NAME,[VALUE,LABEL]],@p);    $label=$self->escapeHTML($label);    $value=$self->escapeHTML($value,1);    my($name) = ' name=".submit"' unless $NOSTICKY;    $name = qq/ name="$label"/ if defined($label);    $value = defined($value) ? $value : $label;    my($val) = '';    $val = qq/ value="$value"/ if defined($value);    my($other) = @other ? " @other" : '';    return $XHTML ? qq(<input type="submit"$name$val$other />)                  : qq/<input type="submit"$name$val$other>/;}END_OF_FUNC#### Method: reset# Create a "reset" button.# Parameters:#   $name -> (optional) Name for the button.# Returns:#   A string containing a <INPUT TYPE="reset"> tag####'reset' => <<'END_OF_FUNC',sub reset {    my($self,@p) = self_or_default(@_);    my($label,@other) = rearrange([NAME],@p);    $label=$self->escapeHTML($label);    my($value) = defined($label) ? qq/ value="$label"/ : '';    my($other) = @other ? " @other" : '';    return $XHTML ? qq(<input type="reset"$value$other />)                  : qq/<input type="reset"$value$other>/;}END_OF_FUNC#### Method: defaults# Create a "defaults" button.# Parameters:#   $name -> (optional) Name for the button.# Returns:#   A string containing a <INPUT TYPE="submit" NAME=".defaults"> tag## Note: this button has a special meaning to the initialization script,# and tells it to ERASE the current query string so that your defaults# are used again!####'defaults' => <<'END_OF_FUNC',sub defaults {    my($self,@p) = self_or_default(@_);    my($label,@other) = rearrange([[NAME,VALUE]],@p);    $label=$self->escapeHTML($label,1);    $label = $label || "Defaults";    my($value) = qq/ value="$label"/;    my($other) = @other ? " @other" : '';    return $XHTML ? qq(<input type="submit" name=".defaults"$value$other />)                  : qq/<input type="submit" NAME=".defaults"$value$other>/;}END_OF_FUNC#### Method: comment# Create an HTML <!-- comment --># Parameters: a string'comment' => <<'END_OF_FUNC',sub comment {    my($self,@p) = self_or_CGI(@_);    return "<!-- @p -->";}END_OF_FUNC#### Method: checkbox# Create a checkbox that is not logically linked to any others.# The field value is "on" when the button is checked.# Parameters:#   $name -> Name of the checkbox#   $checked -> (optional) turned on by default if true#   $value -> (optional) value of the checkbox, 'on' by default#   $label -> (optional) a user-readable label printed next to the box.#             Otherwise the checkbox name is used.# Returns:#   A string containing a <INPUT TYPE="checkbox"> field####'checkbox' => <<'END_OF_FUNC',sub checkbox {    my($self,@p) = self_or_default(@_);    my($name,$checked,$value,$label,$override,@other) = 	rearrange([NAME,[CHECKED,SELECTED,ON],VALUE,LABEL,[OVERRIDE,FORCE]],@p);        $value = defined $value ? $value : 'on';    if (!$override && ($self->{'.fieldnames'}->{$name} || 		       defined $self->param($name))) {	$checked = grep($_ eq $value,$self->param($name)) ? ' checked' : '';    } else {	$checked = $checked ? qq/ checked/ : '';    }    my($the_label) = defined $label ? $label : $name;    $name = $self->escapeHTML($name);    $value = $self->escapeHTML($value,1);    $the_label = $self->escapeHTML($the_label);    my($other) = @other ? " @other" : '';    $self->register_parameter($name);    return $XHTML ? qq{<input type="checkbox" name="$name" value="$value"$checked$other />$the_label}                  : qq{<input type="checkbox" name="$name" value="$value"$checked$other>$the_label};}END_OF_FUNC#### Method: checkbox_group# Create a list of logically-linked checkboxes.# Parameters:#   $name -> Common name for all the check boxes#   $values -> A pointer to a regular array containing the#             values for each checkbox in the group.#   $defaults -> (optional)#             1. If a pointer to a regular array of checkbox values,#             then this will be used to decide which#             checkboxes to turn on by default.#             2. If a scalar, will be assumed to hold the#             value of a single checkbox in the group to turn on. #   $linebreak -> (optional) Set to true to place linebreaks#             between the buttons.#   $labels -> (optional)#             A pointer to an associative array of labels to print next to each checkbox#             in the form $label{'value'}="Long explanatory label".#             Otherwise the provided values are used as the labels.# Returns:#   An ARRAY containing a series of <INPUT TYPE="checkbox"> fields####'checkbox_group' => <<'END_OF_FUNC',sub checkbox_group {    my($self,@p) = self_or_default(@_);    my($name,$values,$defaults,$linebreak,$labels,$rows,$columns,       $rowheaders,$colheaders,$override,$nolabels,@other) =	rearrange([NAME,[VALUES,VALUE],[DEFAULTS,DEFAULT],			  LINEBREAK,LABELS,ROWS,[COLUMNS,COLS],			  ROWHEADERS,COLHEADERS,			  [OVERRIDE,FORCE],NOLABELS],@p);    my($checked,$break,$result,$label);    my(%checked) = $self->previous_or_default($name,$defaults,$override);	if ($linebreak) {    $break = $XHTML ? "<br />" : "<br>";	}	else {	$break = '';	}    $name=$self->escapeHTML($name);    # Create the elements    my(@elements,@values);    @values = $self->_set_values_and_labels($values,\$labels,$name);    my($other) = @other ? " @other" : '';    foreach (@values) {	$checked = $checked{$_} ? qq/ checked/ : '';	$label = '';	unless (defined($nolabels) && $nolabels) {	    $label = $_;	    $label = $labels->{$_} if defined($labels) && defined($labels->{$_});	    $label = $self->escapeHTML($label);	}	$_ = $self->escapeHTML($_,1);	push(@elements,$XHTML ? qq(<input type="checkbox" name="$name" value="$_"$checked$other />${label}${break})                              : qq/<input type="checkbox" name="$name" value="$_"$checked$other>${label}${break}/);    }    $self->register_parameter($name);    return wantarray ? @elements : join(' ',@elements)                    unless defined($columns) || defined($rows);    return _tableize($rows,$columns,$rowheaders,$colheaders,@elements);}END_OF_FUNC# Escape HTML -- used internally'escapeHTML' => <<'END_OF_FUNC',sub escapeHTML {         my ($self,$toencode,$newlinestoo) = CGI::self_or_default(@_);         return undef unless defined($toencode);         return $toencode if ref($self) && $self->{'dontescape'};         $toencode =~ s{&}{&amp;}gso;         $toencode =~ s{<}{&lt;}gso;         $toencode =~ s{>}{&gt;}gso;         $toencode =~ s{"}{&quot;}gso;         my $latin = uc $self->{'.charset'} eq 'ISO-8859-1' ||                     uc $self->{'.charset'} eq 'WINDOWS-1252';         if ($latin) {  # bug in some browsers                $toencode =~ s{'}{&#39;}gso;                $toencode =~ s{\x8b}{&#139;}gso;                $toencode =~ s{\x9b}{&#155;}gso;                if (defined $newlinestoo && $newlinestoo) {                     $toencode =~ s{\012}{&#10;}gso;                     $toencode =~ s{\015}{&#13;}gso;                }         }         return $toencode;}END_OF_FUNC# unescape HTML -- used internally'unescapeHTML' => <<'END_OF_FUNC',sub unescapeHTML {    my ($self,$string) = CGI::self_or_default(@_);    return undef unless defined($string);    my $latin = defined $self->{'.charset'} ? $self->{'.charset'} =~ /^(ISO-8859-1|WINDOWS-1252)$/i                                            : 1;    # thanks to Randal Schwartz for the correct solution to this one    $string=~ s[&(.*?);]{	local $_ = $1;	/^amp$/i	? "&" :	/^quot$/i	? '"' :        /^gt$/i		? ">" :	/^lt$/i		? "<" :	/^#(\d+)$/ && $latin	     ? chr($1) :	/^#x([0-9a-f]+)$/i && $latin ? chr(hex($1)) :	$_	}gex;    return $string;}END_OF_FUNC# Internal procedure - don't use'_tableize' => <<'END_OF_FUNC',sub _tableize {    my($rows,$columns,$rowheaders,$colheaders,@elements) = @_;    $rowheaders = [] unless defined $rowheaders;    $colheaders = [] unless defined $colheaders;    my($result);    if (defined($columns)) {	$rows = int(0.99 + @elements/$columns) unless defined($rows);    }    if (defined($rows)) {	$columns = int(0.99 + @elements/$rows) unless defined($columns);    }        # rearrange into a pretty table    $result = "<table>";    my($row,$column);    unshift(@$colheaders,'') if @$colheaders && @$rowheaders;    $result .= "<tr>" if @{$colheaders};    foreach (@{$colheaders}) {	$result .= "<th>$_</th>";    }    for ($row=0;$row<$rows;$row++) {	$result .= "<tr>";	$result .= "<th>$rowheaders->[$row]</th>" if @$rowheaders;	for ($column=0;$column<$columns;$column++) {	    $result .= "<td>" . $elements[$column*$rows + $row] . "</td>"		if defined($elements[$column*$rows + $row]);	}	$result .= "</tr>";    }    $result .= "</table>";    return $result;}END_OF_FUNC#### Method: radio_group# Create a list of logically-linked radio buttons.# Parameters:#   $name -> Common name for all the buttons.#   $values -> A pointer to a regular array containing the#             values for each button in the group.#   $default -> (optional) Value of the button to turn on by default.  Pass '-'#               to turn _nothing_ on.#   $linebreak -> (optional) Set to true to place linebreaks#             between the buttons.#   $labels -> (optional)#             A pointer to an associative array of labels to print next to each checkbox#             in the form $label{'value'}="Long explanatory label".#             Otherwise the provided values are used as the labels.# Returns:#   An ARRAY containing a series of <INPUT TYPE="radio"> fields####'radio_group' => <<'END_OF_FUNC',sub radio_group {    my($self,@p) = self_or_default(@_);    my($name,$values,$default,$linebreak,$labels,       $rows,$columns,$rowheaders,$colheaders,$override,$nolabels,@other) =	rearrange([NAME,[VALUES,VALUE],DEFAULT,LINEBREAK,LABELS,			  ROWS,[COLUMNS,COLS],			  ROWHEADERS,COLHEADERS,			  [OVERRIDE,FORCE],NOLABELS],@p);    my($result,$checked);    if (!$override && defined($self->param($name))) {	$checked = $self->param($name);    } else {	$checked = $default;    }    my(@elements,@values);    @values = $self->_set_values_and_labels($values,\$labels,$name);    # If no check array is specified, check the first by default    $checked = $values[0] unless defined($checked) && $checked ne '';    $name=$self->escapeHTML($name);    my($other) = @other ? " @other" : '';    foreach (@values) {	my($checkit) = $checked eq $_ ? qq/ checked/ : '';	my($break);	if ($linebreak) {          $break = $XHTML ? "<br />" : "<br>";	}	else {	  $break = '';	}	my($label)='';	unless (defined($nolabels) && $nolabels) {	    $label = $_;	    $label = $labels->{$_} if defined($labels) && defined($labels->{$_});	    $label = $self->escapeHTML($label,1);	}	$_=$self->escapeHTML($_);	push(@elements,$XHTML ? qq(<input type="radio" name="$name" value="$_"$checkit$other />${label}${break})                              : qq/<input type="radio" name="$name" value="$_"$checkit$other>${label}${break}/);    }    $self->register_parameter($name);    return wantarray ? @elements : join(' ',@elements)            unless defined($columns) || defined($rows);    return _tableize($rows,$columns,$rowheaders,$colheaders,@elements);}END_OF_FUNC#### Method: popup_menu# Create a popup menu.# Parameters:#   $name -> Name for all the menu#   $values -> A pointer to a regular array containing the#             text of each menu item.#   $default -> (optional) Default item to display#   $labels -> (optional)#             A pointer to an associative array of labels to print next to each checkbox#             in the form $label{'value'}="Long explanatory label".#             Otherwise the provided values are used as the labels.# Returns:#   A string containing the definition of a popup menu.####'popup_menu' => <<'END_OF_FUNC',sub popup_menu {    my($self,@p) = self_or_default(@_);    my($name,$values,$default,$labels,$override,@other) =	rearrange([NAME,[VALUES,VALUE],[DEFAULT,DEFAULTS],LABELS,[OVERRIDE,FORCE]],@p);    my($result,$selected);    if (!$override && defined($self->param($name))) {	$selected = $self->param($name);    } else {	$selected = $default;    }    $name=$self->escapeHTML($name);    my($other) = @other ? " @other" : '';    my(@values);    @values = $self->_set_values_and_labels($values,\$labels,$name);    $result = qq/<select name="$name"$other>\n/;    foreach (@values) {	my($selectit) = defined($selected) ? ($selected eq $_ ? qq/selected/ : '' ) : '';	my($label) = $_;	$label = $labels->{$_} if defined($labels) && defined($labels->{$_});	my($value) = $self->escapeHTML($_);	$label=$self->escapeHTML($label,1);	$result .= "<option $selectit value=\"$value\">$label</option>\n";    }    $result .= "</select>\n";    return $result;}END_OF_FUNC#### Method: scrolling_list# Create a scrolling list.# Parameters:#   $name -> name for the list#   $values -> A pointer to a regular array containing the#             values for each option line in the list.#   $defaults -> (optional)#             1. If a pointer to a regular array of options,#             then this will be used to decide which#             lines to turn on by default.#             2. Otherwise holds the value of the single line to turn on.#   $size -> (optional) Size of the list.#   $multiple -> (optional) If set, allow multiple selections.#   $labels -> (optional)#             A pointer to an associative array of labels to print next to each checkbox#             in the form $label{'value'}="Long explanatory label".#             Otherwise the provided values are used as the labels.# Returns:#   A string containing the definition of a scrolling list.####'scrolling_list' => <<'END_OF_FUNC',sub scrolling_list {    my($self,@p) = self_or_default(@_);    my($name,$values,$defaults,$size,$multiple,$labels,$override,@other)	= rearrange([NAME,[VALUES,VALUE],[DEFAULTS,DEFAULT],			    SIZE,MULTIPLE,LABELS,[OVERRIDE,FORCE]],@p);    my($result,@values);    @values = $self->_set_values_and_labels($values,\$labels,$name);    $size = $size || scalar(@values);    my(%selected) = $self->previous_or_default($name,$defaults,$override);    my($is_multiple) = $multiple ? qq/ multiple/ : '';    my($has_size) = $size ? qq/ size="$size"/: '';    my($other) = @other ? " @other" : '';    $name=$self->escapeHTML($name);    $result = qq/<select name="$name"$has_size$is_multiple$other>\n/;    foreach (@values) {	my($selectit) = $selected{$_} ? qq/selected/ : '';	my($label) = $_;	$label

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -