mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			233 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Raku
		
	
	
	
	
	
			
		
		
	
	
			233 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Raku
		
	
	
	
	
	
| #!/usr/bin/env perl6
 | |
| 
 | |
| use v6;
 | |
| 
 | |
| my $string = 'I look like a # comment!';
 | |
| 
 | |
| if $string eq 'foo' {
 | |
|     say 'hello';
 | |
| }
 | |
| 
 | |
| regex http-verb {
 | |
|       'GET'
 | |
|     | 'POST'
 | |
|     | 'PUT'
 | |
|     | 'DELETE'
 | |
|     | 'TRACE'
 | |
|     | 'OPTIONS'
 | |
|     | 'HEAD'
 | |
| }
 | |
| 
 | |
| # a sample comment
 | |
| 
 | |
| say 'Hello from Perl 6!'
 | |
| 
 | |
| 
 | |
| #`{
 | |
| multi-line comment!
 | |
| }
 | |
| 
 | |
| say 'here';
 | |
| 
 | |
| #`(
 | |
| multi-line comment!
 | |
| )
 | |
| 
 | |
| say 'here';
 | |
| 
 | |
| #`{{{
 | |
| I'm a special comment!
 | |
| }}}
 | |
| 
 | |
| say 'there';
 | |
| 
 | |
| #`{{
 | |
| I'm { even } specialer!
 | |
| }}
 | |
| 
 | |
| say 'there';
 | |
| 
 | |
| #`{{
 | |
| does {{nesting}} work?
 | |
| }}
 | |
| 
 | |
| #`«<
 | |
| trying mixed delimiters
 | |
| »
 | |
| 
 | |
| my $string = qq<Hooray, arbitrary delimiter!>;
 | |
| my $string = qq«Hooray, arbitrary delimiter!»;
 | |
| my $string = q <now with whitespace!>;
 | |
| my $string = qq<<more strings>>;
 | |
| 
 | |
| my %hash := Hash.new;
 | |
| 
 | |
| =begin pod
 | |
| 
 | |
| Here's some POD!  Wooo
 | |
| 
 | |
| =end pod
 | |
| 
 | |
| =for Testing
 | |
|     This is POD (see? role isn't highlighted)
 | |
| 
 | |
| say('this is not!');
 | |
| 
 | |
| say 'Moar code!';
 | |
| 
 | |
| my $don't = 16;
 | |
| 
 | |
| sub don't($x) {
 | |
|     !$x
 | |
| }
 | |
| 
 | |
| say don't 'foo';
 | |
| 
 | |
| my %hash = (
 | |
|     :foo(1),
 | |
| );
 | |
| 
 | |
| say %hash<foo>;
 | |
| say %hash<<foo>>;
 | |
| say %hash«foo»;
 | |
| 
 | |
| say %*hash<foo>;
 | |
| say %*hash<<foo>>;
 | |
| say %*hash«foo»;
 | |
| 
 | |
| say $<todo>;
 | |
| say $<todo>;
 | |
| 
 | |
| for (@A Z @B) -> $a, $b {
 | |
|     say $a + $b;
 | |
| }
 | |
| 
 | |
| Q:PIR {
 | |
|     .loadlib "somelib"
 | |
| }
 | |
| 
 | |
| my $longstring = q/
 | |
|     lots
 | |
|     of
 | |
|     text
 | |
| /;
 | |
| 
 | |
| my $heredoc = q:to/END_SQL/;
 | |
| SELECT * FROM Users
 | |
| WHERE first_name = 'Rob'
 | |
| END_SQL
 | |
| my $hello;
 | |
| 
 | |
| # Fun with regexen
 | |
| 
 | |
| if 'food' ~~ /foo/ {
 | |
|     say 'match!'
 | |
| }
 | |
| 
 | |
| my $re  = /foo/;
 | |
| my $re2 = m/ foo /;
 | |
| my $re3 = m:i/ FOO /;
 | |
| 
 | |
| call-a-sub(/ foo /);
 | |
| call-a-sub(/ foo \/ bar /);
 | |
| 
 | |
| my $re4    = rx/something | something-else/;
 | |
| my $result = ms/regexy stuff/;
 | |
| my $sub0   = s/regexy stuff/more stuff/;
 | |
| my $sub    = ss/regexy stuff/more stuff/;
 | |
| my $trans  = tr/regexy stuff/more stuff/;
 | |
| 
 | |
| my @values = <a b c d>;
 | |
| call-sub(<a b c d>);
 | |
| call-sub <a b c d>;
 | |
| 
 | |
| my $result = $a < $b;
 | |
| 
 | |
| for <a b c d> -> $letter {
 | |
|     say $letter;
 | |
| }
 | |
| 
 | |
| sub test-sub {
 | |
|     say @_;
 | |
|     say $!;
 | |
|     say $/;
 | |
|     say $0;
 | |
|     say $1;
 | |
|     say @*ARGS;
 | |
|     say $*ARGFILES;
 | |
|     say &?BLOCK;
 | |
|     say ::?CLASS;
 | |
|     say $?CLASS;
 | |
|     say @=COMMENT;
 | |
|     say %?CONFIG;
 | |
|     say $*CWD;
 | |
|     say $=data;
 | |
|     say %?DEEPMAGIC;
 | |
|     say $?DISTRO;
 | |
|     say $*DISTRO;
 | |
|     say $*EGID;
 | |
|     say %*ENV;
 | |
|     say $*ERR;
 | |
|     say $*EUID;
 | |
|     say $*EXECUTABLE_NAME;
 | |
|     say $?FILE;
 | |
|     say $?GRAMMAR;
 | |
|     say $*GID;
 | |
|     say $*IN;
 | |
|     say @*INC;
 | |
|     say %?LANG;
 | |
|     say $*LANG;
 | |
|     say $?LINE;
 | |
|     say %*META-ARGS;
 | |
|     say $?MODULE;
 | |
|     say %*OPTS;
 | |
|     say %*OPT;
 | |
|     say $?KERNEL;
 | |
|     say $*KERNEL;
 | |
|     say $*OUT;
 | |
|     say $?PACKAGE;
 | |
|     say $?PERL;
 | |
|     say $*PERL;
 | |
|     say $*PID;
 | |
|     say %=pod;
 | |
|     say $*PROGRAM_NAME;
 | |
|     say %*PROTOCOLS;
 | |
|     say ::?ROLE;
 | |
|     say $?ROLE;
 | |
|     say &?ROUTINE;
 | |
|     say $?SCOPE;
 | |
|     say $*TZ;
 | |
|     say $*UID;
 | |
|     say $?USAGE;
 | |
|     say $?VM;
 | |
|     say $?XVM;
 | |
| }
 | |
| 
 | |
| say <a b c>;
 | |
| 
 | |
| my $perl5_re = m:P5/ fo{2} /;
 | |
| my $re5      = rx«something | something-else»;
 | |
| 
 | |
| my $M := %*COMPILING<%?OPTIONS><M>;
 | |
| 
 | |
| say $M;
 | |
| 
 | |
| sub regex-name { ... }
 | |
| my $pair = role-name => 'foo';
 | |
| $pair = rolesque => 'foo';
 | |
| 
 | |
| my sub something(Str:D $value) { ... }
 | |
| 
 | |
| my $s = q«<
 | |
| some
 | |
| string
 | |
| stuff
 | |
| »;
 | |
| 
 | |
| my $regex = m«< some chars »;
 | |
| # after
 | |
| 
 | |
| say $/<foo><bar>;
 | |
| 
 | |
| roleq;
 |