- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在下面写了以下比较简单的代码,抛出一个弹出框来提醒我日常任务。
#use Math::Round;
use POSIX;
use Win32;
use strict;
use warnings;
my $basetime = 1484784000;
#code with POSIX
my $days = floor((time()-$basetime) / 86400);
#code without POSIX
#my $days = sprintf("%d", (time()-$basetime) / 86400);
#code with Math::Round
#my $days = Math::Round::nearest_floor(1, (time()-$basetime) / 86400);
my $bigString = "We've been going for $days days.\n";
Win32::MsgBox($bigString);
现在,代码可以运行但会引发警告。其他两个 my $days
也没有发出警告。这是 POSIX 函数显示的警告。
Constant subroutine main::NULL redefined at C:/Strawberry/perl/lib/Exporter.pm line 66.
at C:\coding\perl\posix-win32.pl line 3.
Prototype mismatch: sub main::NULL () vs none at C:/Strawberry/perl/lib/Exporter.pm line 66.
at C:\coding\perl\posix-win32.pl line 3.
我认为我以前从未将 POSIX
与 Win32
结合使用,我可以看到它们都调用了一个类似命名的函数,空
。但我不知道该怎么办。
我喜欢同时使用这两个模块,但显然,我不希望在更复杂的项目中出现这种情况。
抛出警告的原因是什么,我怎样才能简单地避免它?
最佳答案
你是对的,默认情况下,POSIX 和 Win32 都导出 NULL
。
POSIX 是一个行为不佳的模块,默认情况下会导出太多太多(列表在底部)。考虑到这一点,只导入您需要的函数。
use Win32;
use POSIX qw(floor);
POSIX 使用 Exporter 来完成这个。参见 How To Import有关控制导入内容的更多详细信息。
$ perl -wle 'use POSIX; print join ", ", @POSIX::EXPORT'
isupper, isspace, fabs, F_GETLK, strncpy, EBADMSG, localeconv, SIGTRAP, ctermid, S_ISUID, fwrite, pow, strcoll, S_ISBLK, _POSIX_STREAM_MAX, EACCES, putc, FILENAME_MAX, tolower, sinh, EMLINK, ESOCKTNOSUPPORT, EDESTADDRREQ, DBL_MIN, fopen, TOSTOP, strncat, LINK_MAX, ENXIO, INLCR, TCION, NAME_MAX, EINPROGRESS, SIGILL, NDEBUG, VEOF, SEEK_END, ungetc, SEEK_CUR, STDOUT_FILENO, VEOL, ftell, UINT_MAX, ENOTEMPTY, DBL_EPSILON, INPCK, WIFSIGNALED, B134, remove, LC_TIME, SIGSEGV, _POSIX_PATH_MAX, F_RDLCK, SIG_BLOCK, VINTR, SA_NOCLDSTOP, PATH_MAX, isdigit, log10, O_RDWR, ENOTCONN, TMP_MAX, signal, F_SETLKW, qsort, O_TRUNC, _SC_TZNAME_MAX, _POSIX_NGROUPS_MAX, LC_COLLATE, _PC_NO_TRUNC, SCHAR_MAX, EHOSTUNREACH, fputs, ctime, fgetc, O_APPEND, _POSIX_ARG_MAX, EWOULDBLOCK, TCSAFLUSH, strstr, _exit, execle, malloc, DBL_MANT_DIG, _POSIX_SSIZE_MAX, puts, _SC_JOB_CONTROL, ttyname, B150, EMFILE, CS6, _POSIX_LINK_MAX, asin, mblen, _POSIX_PIPE_BUF, sigsuspend, B600, SIGPROF, L_ctermid, _SC_CLK_TCK, ceil, ECHILD, tmpfile, isprint, ECHOE, memset, ENOLINK, atexit, MAX_CANON, EADDRINUSE, sigprocmask, stderr, fscanf, modf, setpgid, tcgetpgrp, toupper, ENETRESET, B2400, raise, S_ISDIR, _SC_PAGESIZE, DBL_MAX_EXP, sysconf, EIDRM, F_SETFD, O_NOCTTY, EHOSTDOWN, FLT_MAX, CSTOPB, S_IRWXU, EPROTO, TCSANOW, S_IRWXO, setbuf, strchr, strerror, FLT_MIN_EXP, TCIOFF, tan, SIGCONT, EDQUOT, MB_CUR_MAX, _PC_PATH_MAX, SIGTTOU, SIGXCPU, EROFS, fdopen, _PC_VDISABLE, CHILD_MAX, ETXTBSY, S_ISCHR, SIGTTIN, VERASE, ESRCH, LONG_MAX, mbtowc, pause, sscanf, MB_LEN_MAX, O_WRONLY, fstat, _PC_MAX_INPUT, F_SETLK, SIGHUP, S_IXUSR, ETIME, DBL_MAX_10_EXP, execvp, ENOTSOCK, DBL_MIN_10_EXP, TCSADRAIN, isalnum, getchar, EMSGSIZE, TCIOFLUSH, _SC_NGROUPS_MAX, FLT_RADIX, ENOTDIR, _PC_LINK_MAX, strspn, S_IRWXG, _POSIX_NO_TRUNC, EXIT_SUCCESS, VKILL, acos, ERESTART, vprintf, EPFNOSUPPORT, IGNCR, _PC_MAX_CANON, STDIN_FILENO, strxfrm, _SC_VERSION, isxdigit, setsid, _POSIX_NAME_MAX, fmod, VSTART, B9600, FLT_MANT_DIG, islower, EXIT_FAILURE, clock, ENETDOWN, CS7, strrchr, SIGUSR2, tcdrain, INT_MIN, LDBL_DIG, _POSIX_JOB_CONTROL, SIG_UNBLOCK, _SC_STREAM_MAX, X_OK, F_UNLCK, ETIMEDOUT, CHAR_BIT, tmpnam, W_OK, sigpending, cfgetospeed, IEXTEN, geteuid, SIGRTMAX, E2BIG, LDBL_MIN, _SC_CHILD_MAX, CLK_TCK, NCCS, tzset, ENOMEM, gets, BRKINT, EDOM, ENODATA, ENOBUFS, ISTRIP, CLOCKS_PER_SEC, LDBL_MIN_EXP, SHRT_MIN, PARODD, EOF, asctime, ENFILE, EPROCLIM, freopen, sigaction, F_DUPFD, O_ACCMODE, FLT_MAX_10_EXP, difftime, TCOFLUSH, EINTR, ENOMSG, L_cuserid, B4800, EAGAIN, TCOON, setjmp, TZNAME_MAX, S_IWOTH, cuserid, PIPE_BUF, strtol, HUGE_VAL, F_GETFD, IGNPAR, EBUSY, memmove, ENOTBLK, getgid, SIGINT, EUSERS, SIGURG, EDEADLK, EOWNERDEAD, creat, _POSIX_MAX_CANON, _POSIX_CHOWN_RESTRICTED, execlp, F_SETFL, stdout, SIG_DFL, ldiv, SIGKILL, VSUSP, ENOTRECOVERABLE, B300, B200, HUPCL, WTERMSIG, offsetof, clearerr, tanh, getcwd, LDBL_MAX_10_EXP, SIG_SETMASK, ECHONL, O_NONBLOCK, S_IXOTH, ECONNABORTED, F_OK, tcflush, _POSIX_SAVED_IDS, SIGPIPE, _PC_NAME_MAX, ECANCELED, SIGCHLD, EREMOTE, FLT_MAX_EXP, SEEK_SET, getpid, B1800, NOFLSH, SIGUSR1, ECONNRESET, wcstombs, ESPIPE, WSTOPSIG, rewind, BUFSIZ, SIGABRT, STREAM_MAX, vsprintf, tcsendbreak, LDBL_MIN_10_EXP, pathconf, S_IRGRP, _SC_SAVED_IDS, OPOST, execv, feof, O_EXCL, access, sigsetjmp, mktime, fread, B1200, LC_MESSAGES, EXDEV, S_IROTH, longjmp, SA_RESETHAND, LC_ALL, ENOSYS, calloc, B110, FLT_EPSILON, assert, VQUIT, B50, ICANON, IXON, ECONNREFUSED, strftime, _PC_PIPE_BUF, ERANGE, SA_ONSTACK, ispunct, _POSIX_MAX_INPUT, WIFSTOPPED, ldexp, ENOLCK, EOTHER, _PC_CHOWN_RESTRICTED, PARENB, O_CREAT, STDERR_FILENO, ARG_MAX, ETOOMANYREFS, isatty, S_ISFIFO, SIGQUIT, abort, EPIPE, isalpha, USHRT_MAX, SA_RESTART, bsearch, IGNBRK, stdin, EPROTONOSUPPORT, ENOSPC, fgets, getegid, EAFNOSUPPORT, setvbuf, SIGTSTP, getuid, ESHUTDOWN, LONG_MIN, fgetpos, _POSIX_VERSION, frexp, %SIGRT, EADDRNOTAVAIL, F_WRLCK, lseek, EISDIR, atol, cfsetospeed, SIGALRM, fpathconf, B38400, L_tmpname, _POSIX_OPEN_MAX, ESTALE, LC_CTYPE, S_ISREG, WIFEXITED, EPROTOTYPE, SIG_IGN, EIO, ENAMETOOLONG, EPERM, atoi, isgraph, ENOENT, errno, MAX_INPUT, setuid, _SC_OPEN_MAX, S_IRUSR, siglongjmp, getenv, CS8, EINVAL, NULL, ECHO, LDBL_EPSILON, SCHAR_MIN, ENETUNREACH, uname, DBL_MAX, ENOPROTOOPT, SIGSTOP, strtoul, SA_NODEFER, CREAD, SIGBUS, mbstowcs, EFBIG, cfsetispeed, ISIG, FLT_MIN, SA_NOCLDWAIT, fsync, LDBL_MAX_EXP, ENOTTY, VMIN, strtod, TCIFLUSH, SA_SIGINFO, fclose, strcspn, strpbrk, SIGTERM, ENOSTR, ULONG_MAX, LC_NUMERIC, scanf, getgroups, vfprintf, ENOSR, FLT_ROUNDS, EEXIST, S_IWGRP, ENOEXEC, SIGVTALRM, SIGPOLL, memcmp, atan, putchar, _POSIX_CHILD_MAX, fflush, fsetpos, WEXITSTATUS, atof, EFAULT, memchr, strcat, VSTOP, _POSIX_TZNAME_MAX, LDBL_MAX, strlen, setlocale, FLT_MIN_10_EXP, cosh, tcgetattr, realloc, div, CHAR_MAX, fprintf, UCHAR_MAX, execve, B75, ICRNL, strcpy, ECHOK, FD_CLOEXEC, cfgetispeed, iscntrl, strtok, SSIZE_MAX, SIGSYS, S_ISGID, strncmp, EISCONN, labs, CLOCAL, R_OK, memcpy, F_GETFL, VTIME, dup, EALREADY, fseek, strcmp, SIGXFSZ, dup2, wctomb, SHRT_MAX, SIGFPE, SIG_ERR, _SC_ARG_MAX, setgid, execl, RAND_MAX, CSIZE, tcflow, CS5, LC_MONETARY, TCOOFF, _POSIX_VDISABLE, PARMRK, perror, mkfifo, ENODEV, S_IXGRP, WNOHANG, ferror, WUNTRACED, floor, INT_MAX, EOPNOTSUPP, OPEN_MAX, LDBL_MANT_DIG, DBL_DIG, SIGRTMIN, CHAR_MIN, tzname, O_RDONLY, B0, tcsetattr, tcsetpgrp, ELOOP, EOVERFLOW, S_IWUSR, IXOFF, EILSEQ, DBL_MIN_EXP, ENOTSUP, EBADF, B19200, free, fputc, NGROUPS_MAX, FLT_DIG
关于perl - 为什么 POSIX 与 Win32 一起使用 floor() 抛出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41747555/
来自 java docs 公共(public) FileWriter(String fileName) 抛出 IOException 抛出: IOException - 如果指定的文件存在但它是目录而
我使用以下代码将我的 .net 客户端(基于 CQL)连接到 3 节点 Cassandra 集群。我以 30 条记录/秒的速度(从 RabbitMQ)获取数据,并且它们顺利地存储在 cassandra
如果在读取文件时缺少字段,我应该捕获 NoSuchElementException。如果缺少一个字段,我只需要跳到文件的下一行。我的问题是,我在哪里实现我的 try/catch 代码来做到这一点?这是
我正在尝试使用 ASP.NET MVC 实现 OpeinID 登录。我正在尝试按照 http://blog.nerdbank.net/2008/04/add-openid-login-support-
学习使用 Java 进行 xml 解析,并且正在编写一个测试程序来尝试各种东西。所有测试 System.out.println() 都是我在控制台中所期望的,除了 childElement 返回 [n
我正在尝试使用 SwingUtilities 创建 JFrame Thread tt = new Thread(new Runnable() { public void run
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我写了这段代码: MethodInfo method2 = typeof(IntPtr).GetMethod( "op_Explicit", Bind
我开始学习 Java,并且正在根据书本做一些练习。在执行此操作时,我遇到了以下错误:线程“main”java.util.InputMismatchException 中出现异常。我正在编写一个简单的程
我有一个文本文件,其中前两行是整数 m 和 n,然后有 m 行,每行都有 n 管道分隔值。我编写了一个程序,读取文件并使用文件中的值创建 m*n 数组,它工作了无数次,然后突然,使用相同的代码,使用相
所以我尝试使用在另一个类中生成的 bean 以在主应用程序中使用 package com.simon.spring.basics.properties; import org.spri
我还没有完成这个应用程序,但我希望在我的手机上看到它的样子。但是,它会强制关闭并引发 InstantiationException。 logcat 异常: 09-19 20:13:47.987: D/
我想从 UIViewController 加载一个基于 SwiftUI 的 View ,该 View 读取包本地的 json。仅 swiftUI 项目中的代码和绑定(bind)工作正常,当我利用 UI
'java.net.SocketTimeoutException:连接超时' 循环一段时间后我收到此错误。为什么我会收到 SocketTimeoutException?我该如何修复这个错误? @Ove
当有 null 值时抛出 ArgumentNullException() 是个好主意吗? This thread 没有提到在 null 上抛出的最明显的异常。 谢谢 最佳答案 ArgumentNull
我得到这个异常: NullReferenceException Object reference not set to an instance of an object at Namespace
所以其中一个方法的描述如下: public BasicLinkedList addToFront(T data) This operation is invalid for a sorted list
我正在使用 Intellij Idea,当我去生成 JavaDocs(通过工具 -> 生成 JavaDoc)时,我抛出了一个 IllegealArgumentException,没有关于发生了什么问题
我正在学习 C++ 中的互斥锁,但以下代码(摘自 N. Josuttis 的“C++ 标准库”)有问题。 我不明白为什么它会阻塞/抛出除非我在主线程中添加this_thread::sleep_for(
我正在试验 JavaFX 标签和组,通过鼠标拖动将它们移动到屏幕上。新节点从一些线程添加到动画组。但是,有时我会突然看到以下异常 - 我假设,当某些节点重叠时。但是不知道是什么问题……因为不涉及我的代
我是一名优秀的程序员,十分优秀!