in reply to Mouse role fails

It looks like there may be a problem with your copy of IO::Handle. Does this script work OK for you?

use IO::Handle; STDOUT->print("Type some text and hit enter.\n"); STDOUT->print("Type 'quit' or 'exit' when you've finished.\n\n"); while (my $x = STDIN->getline) { last if $x =~ /^\s*(quit|exit)/i; STDOUT->print($x); }
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^2: Mouse role fails
by karlgoethebier (Abbot) on Nov 02, 2012 at 14:03 UTC

    Hi, this code fails with Active State Perl and Strawberry but is OK on a linux box:

    use IO::File; use Data::Dumper; my $fh = IO::File->new(); $fh->open(shift); my @lines = $fh->getlines(); undef $fh; print Dumper (@lines);

    Perl versions:

    Strawberry: This is perl 5, version 16, subversion 1 (v5.16.1) built for MSWin32-x86-multi-thread

    Active State: This is perl 5, version 14, subversion 2 (v5.14.2) built for MSWin32-x86-multi-thread

    Linux Box Perl: This is perl, v5.8.8 built for x86_64-linux-thread-multi

    It seems that the role didn't fail but IO::File/IO::Handle does(same errors), as you assumed.

    Regards and thank you, Karl

      If ActiveState and Strawberry are on the same box, it might be that they are getting confused about their libraries. XS libraries built for one are very unlikely to run correctly on the other.

      Also, for what it's worth, Moo is gaining traction over Mouse as a light-weight Moose replacement. Although its surface syntax is less Moose-compatible, its killer feature is that if Moo detects that Moose has been loaded, it can inflate Moo classes and roles into full Moose classes and roles.

      perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

        Hi, i also thought about giving MOO a try.

        The platform for the ETL stuff that i have to do is M$-Dog with IIS 7. I have very little influence on the setup of this box - that means: use good old CGI. So performance is really an issue. And the tool must run under cmd too.

        What do you think about this?

        Regards, Karl

      Am I missing what this is (not) supposed to do? Seems to work fine for me on Windows 7 x64 and Strawberry 5.16.1 (64-bit):

      VinsWorldcom@C:\Users\VinsWorldcom\tmp> ver Microsoft Windows [Version 6.1.7601] VinsWorldcom@C:\Users\VinsWorldcom\tmp> perl -v This is perl 5, version 16, subversion 1 (v5.16.1) built for MSWin32-x +64-multi-thread VinsWorldcom@C:\Users\VinsWorldcom\tmp> perl test.pl test.pl $VAR1 = 'use IO::File; '; $VAR2 = 'use Data::Dumper; '; $VAR3 = 'my $fh = IO::File->new(); '; $VAR4 = '$fh->open(shift); '; $VAR5 = 'my @lines = $fh->getlines(); '; $VAR6 = 'undef $fh; '; $VAR7 = 'print Dumper (@lines);';

        "Seems to work fine for me"

        Good. This means that you have a non-broken copy of IO::File.

        perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

        Hi, you don't miss anything.

        I did the same thing as you. And i swear i didn't work. I was really surprised - IO::FIle/IO::Handle is good stuff. I will post the output tomorrow (I don't have remote access to the fishy box).

        Regards, Karl

      If ActiveState and Strawberry are on the same box, it might be that they are getting confused about their libraries. XS libraries built for one are very unlikely to run correctly on the other.

      Looks like I somehow duplicated this post instead of updating it!

      perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
Re^2: Mouse role fails
by karlgoethebier (Abbot) on Nov 02, 2012 at 18:54 UTC

    Hi all, here is what i did to fix this issue for Active State Perl:

    C:/perl/bin/perl.exe -MCPAN -e shell

    Then:

    cpan> upgrade File::IO

    Sorry i didn't capture the output - i was a little bit annoyed and impatient. But it worked.

    For Strawberry was no upgrade available.

    To figure out this issue (two Perl installations on same system), i will throw away all Perl on my box and restart with Active State Perl.

    Regards, Karl
Re^2: Mouse role fails
by karlgoethebier (Abbot) on Nov 02, 2012 at 13:17 UTC
    It works as expected.