Chinaunix

标题: 智能匹配given在5.14.2中的问题 [打印本页]

作者: 无双六    时间: 2012-11-10 16:09
标题: 智能匹配given在5.14.2中的问题
我在linux版perl5.14.2中建立的练习程序,如下;
  1. #!usr/bin/perl
  2. use utf8;
  3. use strict;

  4. given ($ARGV[0]) {
  5.      when ('Fred')     {print 'Name is Fred'; continue}
  6.      when (/\AFred/) {print 'Name starts with Fred'; continue}
  7.      when (/fred/i)     {print 'Name has fred in it'; continue}
  8.      default                       {print "I don't see a Fred"}
  9. }
复制代码


执行的时候,总是说第5行“) {”语法错误,但我在开头加上“use 5.010001;”它就能正常运行,可我在5.14.2的perlsyn文档中看到的例子跟我的程序没区别呀,请问这是怎么回事呢?:wink:
作者: rubyish    时间: 2012-11-10 16:41
  1. use 5.014;
复制代码

作者: 无双六    时间: 2012-11-10 16:59
回复 2# rubyish
能告诉下这是为什么吗?难道以后写程序又要多写一行吗

   
作者: zhlong8    时间: 2012-11-10 18:11
given when 可能和 5.10 前代码中的函数名冲突,为了保持向前兼容默认不可用。需要 use feature 'switch';
作者: Perlvim    时间: 2012-11-10 18:12
为了保持向上兼容,新语言的特性,需要声明才能启用。否则就乱了
作者: 无双六    时间: 2012-11-10 18:37
回复 4# zhlong8


   多谢,之前在文档中看到了要用这个声明的,当时可能是打错了导致用不了,现在能用了。
作者: rubyish    时间: 2012-11-11 09:18
Perlvim 发表于 2012-11-10 14:12
为了保持向上兼容,新语言的特性,需要声明才能启用。否则就乱了

多谢




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2