Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

脚本语言中的简单变量如 Perl 的标量,其实都是字符串么?

3 views
Skip to first unread message

acc

unread,
Dec 28, 2009, 9:49:04 AM12/28/09
to
�Dz������� Perl �еı������ǰ��ַ�洢�ģ��㲻�����������Ҿ��ú��Ѽ���

�ҿɲ�����˵���� Perl �У����б����е����ݶ����ַ���Щ���������Լ����ڵĻ����������ģ�����ǡ���ĺ��������ǡ���Ľ��ͣ�ת���ɺ����������ͣ�

������ Perl�����н��ṩ�����ͱ��� var �Ľű����ԣ��Dz��Ƕ�����ݱ�����ַ�ʹ��ʱ��ݻ�����ת���������е����� C++ �� stringstream �IJ�����ʽ��C ��������Ҳ������ĺ�
��һʱ�벻�����ˡ�

�������˼���������

my $s = 'hello'; # length() = 5

my $s = 1222; # length() = 4

my $p = \$s; # length() = 17
# ��� SCALAR(0x182a76c)


acc

unread,
Dec 28, 2009, 11:00:09 AM12/28/09
to
�Ҿ��� Perl ���˱��������ֵ֮�⣬�������ű�����������Ϣ��ֻ����տڲ�̸���
������Ϣ�������Ҹ������￴�ⲿ�����ݵĽ��ܣ��ѵ��ÿ� Advanced Perl Programming
֮��ģ���һ�� Programming Perl �ҹ����Ҷ������ꡣ�����������飺

==============================

1)
my $s = 12255242;
my $p = \$s;
my $x = 'SCALAR(0x182a76c)';
print $x eq $p, "\n"; # ��� 1��˵�����
print $$p, "\n"; # 12255242
print $$x, "\n"; # ����

���Ƿ�˵�� $p ���˱���ֵ������¼��������Ϣ������������Ϣ�������ﱣ��ģ�

2)
��ͨ������ʽ������
7.6. Fun with Perl Enhancements

my $LevelN;
$LevelN = qr/ \( ( [^()] | (??{ $LevelN }) )* \) /x;

�������������ƥ������Ƕ�׵����š�

"substr(str, 0, (3+2))" =~ /$LevelN/;

���Լ�д�˸��ַ����ݺ� $LevelN һ����û��ʹ�� qr ������

my $s = '(?-xism:\(([^()]|(??{$s}))*\))';

print "matched\n" if "substr(str, 0, (3+2))" =~ /$s/;

���ͨ������룬��ʾ˵
Eval-group not allowed at runtime ...

�Ҿ��� $LevelN ��ʹ�� qr ����ʱ���϶�Ҳ������ij����ʽ��������Ϣ��

my($s, $t);
$s = '(?-xism:\(([^()]|(??{$t}))*\))'; # Ϊ�˱Ƚϣ���������д $t��ʵ��ʹ��ʱ��
$s��
$t = qr/\(([^()]|(??{$t}))*\)/;
print $s eq $t, "\n"; # ��� 1��˵����ȡ�

==============================

���DZ�����ֵ����ȣ����Dz��ܻ��á�Perl ˵�˼����Ͷ࣬���������٣����ƣ�������ʵ

��ʹ���У����Dz���ô˳�����ǵ������¶��ӡ������Ե��DZȽ�����ԣ������� ==���ַ�

���� eq�������� Perl �ֲ��������ͣ������и�ϰ��������

�������룬���û������֡�������������ڣ�С�����С�ڣ����������ȷ��quit ����

exit ���߻س��˳���

�Ҿ�д�����������¾���ij��򡣱����û����� xxx���Ȳ��� quit/exit���ֲ������֣���

��ΰ�����˵����� isnumber ���ֺ���ô����֪���и������ int������ǽظ�����ģ�

Ҫ������ǡ���ֵ�����һ��ǵ��Ȱ��������ת��Ϊ����ֵ����how ��

����������ֵ� Perl ���򣬸���ôд�����û����� xxx ʱ�����о����أ��ҹ�����һ����
��ת���ĺ���

==============================

#!/usr/bin/perl
use warnings;
use strict;

my $num = int 1 + rand 100;

while (<STDIN>)
{
chomp;
if (/^(:?quit|exit)$/i)
{
print "quit/exit met\n";
last;
}
elsif ($_ eq "")
{
print "carriage return met\n";
last;
}
elsif ($_ == $num)
{
print "Exactly\n";
last;
}
elsif ($_ > $num)
{
print "Too high\n";
next;
}
elsif ($_ < $num)
{
print "Too low\n";
next;
}
}

==============================

my $num = int 1 + rand 100 ��仰��������ô��ϵģ���Ҳ�����������Ҳ���������š�


"acc" <jo...@sina.com> д����Ϣ����:hhaggh$pfl$1...@www.shinco.com...

acc

unread,
Dec 28, 2009, 11:03:23 AM12/28/09
to
��֪�� $LevelN �Ǹ�ģʽ��qr ��ɵ�Ҳ��ģʽ�����ǣ�������ֵ��һ�����DZ����ڱ����У���û����ȡ���������Ϣ��

"acc" <jo...@sina.com> д����Ϣ����:hhaklq$db1$1...@www.shinco.com...

acc

unread,
Dec 28, 2009, 12:07:46 PM12/28/09
to
������Ӻ����ң���λҲ���Բ�����

"acc" <jo...@sina.com> д����Ϣ����:hhaklq$db1$1...@www.shinco.com...

> �Ҿ��� Perl ���˱��������ֵ֮�⣬�������ű�����������Ϣ��ֻ����տڲ�̸���
> ������Ϣ�������Ҹ������￴�ⲿ�����ݵĽ��ܣ��ѵ��ÿ� Advanced Perl
> Programming
> ֮��ģ���һ�� Programming Perl �ҹ����Ҷ������ꡣ�����������飺
>

> ...


acc

unread,
Dec 28, 2009, 12:11:49 PM12/28/09
to
Programming Perl
8.3.6 Ӳ���ÿ����õ�������

���������һ���ִ�������ʹ��Ӳ���ã���ô��ת����һ�������ͺ͵�ַ���ִ���
SCALAR(0x12fcde)���������ת���Dz���ʵ�ֵģ���Ϊ���ִ�������У����ü�����Ϣ������ʧ ���������ó�����Է���һ����һ������ִ�����ĵ�ַҲ̫Σ���ˡ�����


"acc" <jo...@sina.com> д����Ϣ����:hhaklq$db1$1...@www.shinco.com...

> 1)
> my $s = 12255242;
> my $p = \$s;
> my $x = 'SCALAR(0x182a76c)';
> print $x eq $p, "\n"; # ��� 1��˵�����
> print $$p, "\n"; # 12255242
> print $$x, "\n"; # ����

> ���Ƿ�˵�� $p ���˱���ֵ������¼��������Ϣ������������Ϣ�������ﱣ��ģ�
>

> ...


0 new messages