Perl Special Variables

本文详细介绍了Perl语言中各种预定义的特殊变量,包括全局特殊变量、数组和哈希、文件句柄以及正则表达式的特殊变量等。这些变量在Perl编程中具有重要作用,了解它们有助于更高效地使用Perl。

Some variables have a predefined and special meaning in Perl. They are the variables that use punctuation characters after the usual variable indicator ($, @, or %), such as $_. The explicit, long-form names shown are the variables' equivalents when you use the English module by including "use English;" at the top of your program.

4.4.1 Global Special Variables

The most commonly used special variable is $_, which contains the default input and pattern-searching string. For example, in the following lines:

foreach ('hickory','dickory','doc') {
	print;
}
The first time the loop is executed, "hickory" is printed. The second time around, "dickory" is printed, and the third time, "doc" is printed. That's because in each iteration of the loop, the current string is placed in $_, and is used by default by print. Here are the places where Perl will assume $_ even if you don't specify it:
  • Various unary functions, including functions like ord and int, as well as the all file tests (-f, -d) except for -t, which defaults to STDIN.

  • Various list functions like print and unlink.

  • The pattern-matching operations m//, s///, and tr/// when used without an =~ operator.

  • The default iterator variable in a foreach loop if no other variable is supplied.

  • The implicit iterator variable in the grep and map functions.

  • The default place to put an input record when a line-input operation's result is tested by itself as the sole criterion of a while test (i.e., <filehandle>). Note that outside of a while test, this will not happen.

The following is a complete listing of global special variables:

$_ $ARG

The default input and pattern-searching space.

$. $INPUT_LINE_NUMBER

$NR

The current input line number of the last filehandle that was read. An explicit close on the filehandle resets the line number.

$/ $INPUT_RECORD_SEPARATOR

$RS

The input record separator; newline by default. If set to the null string, it treats blank lines as delimiters.

$, $OUTPUT_FIELD_SEPARATOR

$OFS

The output field separator for the print operator.

$\ $OUTPUT_RECORD_SEPARATOR $ORS

The output record separator for the print operator.

$ $LIST_SEPARATOR

Like "$," except that it applies to list values interpolated into a double-quoted string (or similar interpreted string). Default is a space.

$; $SUBSCRIPT_SEPARATOR $SUBSEP

The subscript separator for multidimensional array emulation. Default is "\034".

$^L $FORMAT_FORMFEED

What a format outputs to perform a formfeed. Default is "\f".

$: $FORMAT_LINE_BREAK_CHARACTERS

The current set of characters after which a string may be broken to fill continuation fields (starting with ^) in a format. Default is "\n"".

$^A $ACCUMULATOR

The current value of the write accumulator for format lines.

$# $OFMT

Contains the output format for printed numbers (deprecated).

$? $CHILD_ERROR

The status returned by the last pipe close, backtick (``) command, or system operator.

$! $OS_ERROR $ERRNO

If used in a numeric context, yields the current value of the errno variable, identifying the last system call error. If used in a string context, yields the corresponding system error string.

$@ $EVAL_ERROR

The Perl syntax error message from the last eval command.

$$ $PROCESS_ID $PID

The pid of the Perl process running this script.

$< $REAL_USER_ID $UID

The real user ID (uid) of this process.

$> $EFFECTIVE_USER_ID $EUID

The effective uid of this process.

$( $REAL_GROUP_ID $GID

The real group ID (gid) of this process.

$) $EFFECTIVE_GROUP_ID $EGID

The effective gid of this process.

$0 $PROGRAM_NAME

Contains the name of the file containing the Perl script being executed.

$[

The index of the first element in an array and of the first character in a substring. Default is 0.

$] $PERL_VERSION

Returns the version plus patchlevel divided by 1000.

$^D $DEBUGGING

The current value of the debugging flags.

$^E $EXTENDED_OS_ERROR

Extended error message on some platforms.

$^F $SYSTEM_FD_MAX

The maximum system file descriptor, ordinarily 2.

$^H

Contains internal compiler hints enabled by certain pragmatic modules.

$^I $INPLACE_EDIT

The current value of the inplace-edit extension. Use undef to disable inplace editing.

$^M

The contents of $M can be used as an emergency memory pool in case Perl dies with an out-of-memory error. Use of $M requires a special compilation of Perl. See the INSTALL document for more information.

$^O $OSNAME

Contains the name of the operating system that the current Perl binary was compiled for.

$^P $PERLDB

The internal flag that the debugger clears so that it doesn't debug itself.

$^T $BASETIME

The time at which the script began running, in seconds since the epoch.

$^W $WARNING

The current value of the warning switch, either true or false.

$^X $EXECUTABLE_NAME

The name that the Perl binary itself was executed as.

$ARGV

Contains the name of the current file when reading from <ARGV>.

4.4.2 Global Special Arrays and Hashes

@ARGV

The array containing the command-line arguments intended for the script.

@INC

The array containing the list of places to look for Perl scripts to be evaluated by the do, require, or use constructs.

@F

The array into which the input lines are split when the -a command-line switch is given.

%INC

The hash containing entries for the filename of each file that has been included via do or require.

%ENV

The hash containing your current environment.

%SIG

The hash used to set signal handlers for various signals.

4.4.3 Global Special Filehandles

ARGV

The special filehandle that iterates over command line filenames in @ARGV. Usually written as the null filehandle in <>.

STDERR

The special filehandle for standard error in any package.

STDIN

The special filehandle for standard input in any package.

STDOUT

The special filehandle for standard output in any package.

DATA

The special filehandle that refers to anything following the __END__ token in the file containing the script. Or, the special filehandle for anything following the __DATA__ token in a required file, as long as you're reading data in the same package __DATA__ was found in.

_ (underscore)

The special filehandle used to cache the information from the last stat, lstat, or file test operator.

4.4.4 Global Special Constants

__END__

Indicates the logical end of your program. Any following text is ignored, but may be read via the DATA filehandle.

__FILE__

Represents the filename at the point in your program where it's used. Not interpolated into strings.

__LINE__

Represents the current line number. Not interpolated into strings.

__PACKAGE__

Represents the current package name at compile time, or undefined if there is no current package. Not interpolated into strings.

4.4.5 Regular Expression Special Variables

For more information on regular expressions, see Section 4.6, "Regular Expressions" later in this chapter.

$digit

Contains the text matched by the corresponding set of parentheses in the last pattern matched. For example, $1 matches whatever was contained in the first set of parentheses in the previous regular expression.

$& $MATCH

The string matched by the last successful pattern match.

$` $PREMATCH

The string preceding whatever was matched by the last successful pattern match.

$' $POSTMATCH

The string following whatever was matched by the last successful pattern match.

$+ $LAST_PAREN_MATCH

The last bracket matched by the last search pattern. This is useful if you don't know which of a set of alternative patterns was matched. For example:

/Version: (.*)|Revision: (.*)/ && ($rev = ___FCKpd___1);

4.4.6 Filehandle Special Variables

Most of these variables only apply when using formats. See Section 4.10, "Formats" later in this chapter.

$|

$OUTPUT_AUTOFLUSH

If set to nonzero, forces an fflush(3) after every write or print on the currently selected output channel.

$%

$FORMAT_PAGE_NUMBER

The current page number of the currently selected output channel.

$=

$FORMAT_LINES_PER_PAGE

The current page length (printable lines) of the currently selected output channel. Default is 60.

$-

$FORMAT_LINES_LEFT

The number of lines left on the page of the currently selected output channel.

$~

$FORMAT_NAME

The name of the current report format for the currently selected output channel. Default is the name of the filehandle.

$^

$FORMAT_TOP_NAME

The name of the current top-of-page format for the currently selected output channel. Default is the name of the filehandle with _TOP appended.

内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合Koopman算子理论与递归神经网络(RNN)的数据驱动建模方法,旨在对非线性纳米定位系统进行有效线性化建模,并实现高精度的模型预测控制(MPC)。该方法利用Koopman算子将非线性系统映射到高维线性空间,通过递归神经网络学习系统的动态演化规律,构建可解释性强、计算效率高的线性化模型,进而提升预测控制在复杂不确定性环境下的鲁棒性与跟踪精度。文中给出了完整的Matlab代码实现,涵盖数据预处理、网络训练、模型验证与MPC控制器设计等环节,具有较强的基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)可复现性和工程应用价值。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及自动化、精密仪器、机器人等方向的工程技术人员。; 使用场景及目标:①解决高精度纳米定位系统中非线性动态响应带来的控制难题;②实现复杂机电系统的数据驱动建模与预测控制一体化设计;③为非线性系统控制提供一种可替代传统机理建模的有效工具。; 阅读建议:建议结合提供的Matlab代码逐模块分析实现流程,重点关注Koopman观测矩阵构造、RNN网络结构设计与MPC控制器耦合机制,同时可通过替换实际系统数据进行迁移验证,深化对数据驱动控制方法的理解与应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值